mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
serial: zynq: Use platdata for storing static data instead of priv
Explanation from Simon Glass "Private data is created when the device is probed and freed when the device is removed. Platform data is created when the device is bound, and survives probe/remove cycles. Strictly speaking, platform data should be used to hold the decoded device tree properties. Private data should be used for run-time things the device needs to keep track of." Based on description the driver needs to be switch to use platdata instead of priv. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
4fb67f47f1
commit
6bdf0a992c
1 changed files with 16 additions and 16 deletions
|
@ -39,7 +39,7 @@ struct uart_zynq {
|
|||
u32 baud_rate_divider; /* 0x34 - Baud Rate Divider [7:0] */
|
||||
};
|
||||
|
||||
struct zynq_uart_priv {
|
||||
struct zynq_uart_platdata {
|
||||
struct uart_zynq *regs;
|
||||
};
|
||||
|
||||
|
@ -105,7 +105,7 @@ static int _uart_zynq_serial_putc(struct uart_zynq *regs, const char c)
|
|||
|
||||
static int zynq_serial_setbrg(struct udevice *dev, int baudrate)
|
||||
{
|
||||
struct zynq_uart_priv *priv = dev_get_priv(dev);
|
||||
struct zynq_uart_platdata *platdata = dev_get_platdata(dev);
|
||||
unsigned long clock;
|
||||
|
||||
int ret;
|
||||
|
@ -130,28 +130,28 @@ static int zynq_serial_setbrg(struct udevice *dev, int baudrate)
|
|||
return ret;
|
||||
}
|
||||
|
||||
_uart_zynq_serial_setbrg(priv->regs, clock, baudrate);
|
||||
_uart_zynq_serial_setbrg(platdata->regs, clock, baudrate);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int zynq_serial_probe(struct udevice *dev)
|
||||
{
|
||||
struct zynq_uart_priv *priv = dev_get_priv(dev);
|
||||
struct zynq_uart_platdata *platdata = dev_get_platdata(dev);
|
||||
|
||||
/* No need to reinitialize the UART after relocation */
|
||||
if (gd->flags & GD_FLG_RELOC)
|
||||
return 0;
|
||||
|
||||
_uart_zynq_serial_init(priv->regs);
|
||||
_uart_zynq_serial_init(platdata->regs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int zynq_serial_getc(struct udevice *dev)
|
||||
{
|
||||
struct zynq_uart_priv *priv = dev_get_priv(dev);
|
||||
struct uart_zynq *regs = priv->regs;
|
||||
struct zynq_uart_platdata *platdata = dev_get_platdata(dev);
|
||||
struct uart_zynq *regs = platdata->regs;
|
||||
|
||||
if (readl(®s->channel_sts) & ZYNQ_UART_SR_RXEMPTY)
|
||||
return -EAGAIN;
|
||||
|
@ -161,15 +161,15 @@ static int zynq_serial_getc(struct udevice *dev)
|
|||
|
||||
static int zynq_serial_putc(struct udevice *dev, const char ch)
|
||||
{
|
||||
struct zynq_uart_priv *priv = dev_get_priv(dev);
|
||||
struct zynq_uart_platdata *platdata = dev_get_platdata(dev);
|
||||
|
||||
return _uart_zynq_serial_putc(priv->regs, ch);
|
||||
return _uart_zynq_serial_putc(platdata->regs, ch);
|
||||
}
|
||||
|
||||
static int zynq_serial_pending(struct udevice *dev, bool input)
|
||||
{
|
||||
struct zynq_uart_priv *priv = dev_get_priv(dev);
|
||||
struct uart_zynq *regs = priv->regs;
|
||||
struct zynq_uart_platdata *platdata = dev_get_platdata(dev);
|
||||
struct uart_zynq *regs = platdata->regs;
|
||||
|
||||
if (input)
|
||||
return !(readl(®s->channel_sts) & ZYNQ_UART_SR_RXEMPTY);
|
||||
|
@ -179,11 +179,11 @@ static int zynq_serial_pending(struct udevice *dev, bool input)
|
|||
|
||||
static int zynq_serial_ofdata_to_platdata(struct udevice *dev)
|
||||
{
|
||||
struct zynq_uart_priv *priv = dev_get_priv(dev);
|
||||
struct zynq_uart_platdata *platdata = dev_get_platdata(dev);
|
||||
|
||||
priv->regs = (struct uart_zynq *)dev_read_addr(dev);
|
||||
if (IS_ERR(priv->regs))
|
||||
return PTR_ERR(priv->regs);
|
||||
platdata->regs = (struct uart_zynq *)dev_read_addr(dev);
|
||||
if (IS_ERR(platdata->regs))
|
||||
return PTR_ERR(platdata->regs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -207,7 +207,7 @@ U_BOOT_DRIVER(serial_zynq) = {
|
|||
.id = UCLASS_SERIAL,
|
||||
.of_match = zynq_serial_ids,
|
||||
.ofdata_to_platdata = zynq_serial_ofdata_to_platdata,
|
||||
.priv_auto_alloc_size = sizeof(struct zynq_uart_priv),
|
||||
.platdata_auto_alloc_size = sizeof(struct zynq_uart_platdata),
|
||||
.probe = zynq_serial_probe,
|
||||
.ops = &zynq_serial_ops,
|
||||
.flags = DM_FLAG_PRE_RELOC,
|
||||
|
|
Loading…
Reference in a new issue