diff mbox

[U-Boot,1/2] serial_sh: Add OF support

Message ID 1432189870-21598-1-git-send-email-ysato@users.sourceforge.jp
State Rejected, archived
Delegated to: Nobuhiro Iwamatsu
Headers show

Commit Message

Yoshinori Sato May 21, 2015, 6:31 a.m. UTC
Add device tree support.

Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
 doc/device-tree-bindings/serial/sh.txt |  6 ++++++
 drivers/serial/serial_sh.c             | 28 ++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 doc/device-tree-bindings/serial/sh.txt

2.1.4

Comments

Nobuhiro Iwamatsu June 1, 2015, 12:08 a.m. UTC | #1
Hi!

015-05-21 15:31 GMT+09:00 Yoshinori Sato <ysato@users.sourceforge.jp>:
> Add device tree support.
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
>  doc/device-tree-bindings/serial/sh.txt |  6 ++++++
>  drivers/serial/serial_sh.c             | 28 ++++++++++++++++++++++++++++
>  2 files changed, 34 insertions(+)
>  create mode 100644 doc/device-tree-bindings/serial/sh.txt

2015-05-21 15:31 GMT+09:00 Yoshinori Sato <ysato@users.sourceforge.jp>:
> Add support for standard type SCI (without FIFO) port.
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
>  doc/device-tree-bindings/serial/sh.txt | 2 +-
>  drivers/serial/serial_sh.c             | 8 ++++++++
>  2 files changed, 9 insertions(+), 1 deletion(-)
>

Thanks for your patch.
Sorry, your patch can not apply u-boot/master HEAD.
Could you rebase and resend this patch?

Best regards,
  Nobuhiro

2015-05-21 15:31 GMT+09:00 Yoshinori Sato <ysato@users.sourceforge.jp>:
> Add device tree support.
>
> Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> ---
>  doc/device-tree-bindings/serial/sh.txt |  6 ++++++
>  drivers/serial/serial_sh.c             | 28 ++++++++++++++++++++++++++++
>  2 files changed, 34 insertions(+)
>  create mode 100644 doc/device-tree-bindings/serial/sh.txt
>
> diff --git a/doc/device-tree-bindings/serial/sh.txt b/doc/device-tree-bindings/serial/sh.txt
> new file mode 100644
> index 0000000..b23b135
> --- /dev/null
> +++ b/doc/device-tree-bindings/serial/sh.txt
> @@ -0,0 +1,6 @@
> +* Renesas SCI serial interface
> +
> +Required properties:
> +- compatible: must be "renesas,scif" or "renesas,scifa"
> +- reg: exactly one register range with length
> +- clock: input clock frequency for the SCI unit
> diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c
> index 8693c1e..32b2bf0 100644
> --- a/drivers/serial/serial_sh.c
> +++ b/drivers/serial/serial_sh.c
> @@ -17,6 +17,8 @@
>  #include <dm/platform_data/serial_sh.h>
>  #include "serial_sh.h"
>
> +DECLARE_GLOBAL_DATA_PTR;
> +
>  #if defined(CONFIG_CPU_SH7760) || \
>         defined(CONFIG_CPU_SH7780) || \
>         defined(CONFIG_CPU_SH7785) || \
> @@ -201,10 +203,35 @@ static const struct dm_serial_ops sh_serial_ops = {
>         .setbrg = sh_serial_setbrg,
>  };
>
> +#ifdef CONFIG_OF_CONTROL
> +static const struct udevice_id sh_serial_id[] = {
> +       {.compatible = "renesas,scif", .data = PORT_SCIF},
> +       {.compatible = "renesas,scifa", .data = PORT_SCIFA},
> +       {}
> +};
> +
> +static int sh_serial_ofdata_to_platdata(struct udevice *dev)
> +{
> +       struct sh_serial_platdata *plat = dev_get_platdata(dev);
> +       fdt_addr_t addr;
> +
> +       addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
> +       if (addr == FDT_ADDR_T_NONE)
> +               return -EINVAL;
> +
> +       plat->base = addr;
> +       plat->clk = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "clock", 1);
> +       plat->type = dev_get_driver_data(dev);
> +       return 0;
> +}
> +#endif
> +
>  U_BOOT_DRIVER(serial_sh) = {
>         .name   = "serial_sh",
>         .id     = UCLASS_SERIAL,
> +       .of_match = of_match_ptr(sh_serial_id),
> +       .ofdata_to_platdata = of_match_ptr(sh_serial_ofdata_to_platdata),
> +       .platdata_auto_alloc_size = sizeof(struct sh_serial_platdata),
>         .probe  = sh_serial_probe,
>         .ops    = &sh_serial_ops,
>         .flags  = DM_FLAG_PRE_RELOC,
> --
> 2.1.4
>
Yoshinori Sato June 1, 2015, 4:31 a.m. UTC | #2
On Mon, 01 Jun 2015 09:08:55 +0900,
Nobuhiro Iwamatsu wrote:
> 
> Hi!
> 
> 015-05-21 15:31 GMT+09:00 Yoshinori Sato <ysato@users.sourceforge.jp>:
> > Add device tree support.
> >
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> > ---
> >  doc/device-tree-bindings/serial/sh.txt |  6 ++++++
> >  drivers/serial/serial_sh.c             | 28 ++++++++++++++++++++++++++++
> >  2 files changed, 34 insertions(+)
> >  create mode 100644 doc/device-tree-bindings/serial/sh.txt
> 
> 2015-05-21 15:31 GMT+09:00 Yoshinori Sato <ysato@users.sourceforge.jp>:
> > Add support for standard type SCI (without FIFO) port.
> >
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> > ---
> >  doc/device-tree-bindings/serial/sh.txt | 2 +-
> >  drivers/serial/serial_sh.c             | 8 ++++++++
> >  2 files changed, 9 insertions(+), 1 deletion(-)
> >
> 
> Thanks for your patch.
> Sorry, your patch can not apply u-boot/master HEAD.
> Could you rebase and resend this patch?
>

Oh. I'm Sorry.
I will rebase and resend.
Thanks.

> Best regards,
>   Nobuhiro
> 
> 2015-05-21 15:31 GMT+09:00 Yoshinori Sato <ysato@users.sourceforge.jp>:
> > Add device tree support.
> >
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
> > ---
> >  doc/device-tree-bindings/serial/sh.txt |  6 ++++++
> >  drivers/serial/serial_sh.c             | 28 ++++++++++++++++++++++++++++
> >  2 files changed, 34 insertions(+)
> >  create mode 100644 doc/device-tree-bindings/serial/sh.txt
> >
> > diff --git a/doc/device-tree-bindings/serial/sh.txt b/doc/device-tree-bindings/serial/sh.txt
> > new file mode 100644
> > index 0000000..b23b135
> > --- /dev/null
> > +++ b/doc/device-tree-bindings/serial/sh.txt
> > @@ -0,0 +1,6 @@
> > +* Renesas SCI serial interface
> > +
> > +Required properties:
> > +- compatible: must be "renesas,scif" or "renesas,scifa"
> > +- reg: exactly one register range with length
> > +- clock: input clock frequency for the SCI unit
> > diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c
> > index 8693c1e..32b2bf0 100644
> > --- a/drivers/serial/serial_sh.c
> > +++ b/drivers/serial/serial_sh.c
> > @@ -17,6 +17,8 @@
> >  #include <dm/platform_data/serial_sh.h>
> >  #include "serial_sh.h"
> >
> > +DECLARE_GLOBAL_DATA_PTR;
> > +
> >  #if defined(CONFIG_CPU_SH7760) || \
> >         defined(CONFIG_CPU_SH7780) || \
> >         defined(CONFIG_CPU_SH7785) || \
> > @@ -201,10 +203,35 @@ static const struct dm_serial_ops sh_serial_ops = {
> >         .setbrg = sh_serial_setbrg,
> >  };
> >
> > +#ifdef CONFIG_OF_CONTROL
> > +static const struct udevice_id sh_serial_id[] = {
> > +       {.compatible = "renesas,scif", .data = PORT_SCIF},
> > +       {.compatible = "renesas,scifa", .data = PORT_SCIFA},
> > +       {}
> > +};
> > +
> > +static int sh_serial_ofdata_to_platdata(struct udevice *dev)
> > +{
> > +       struct sh_serial_platdata *plat = dev_get_platdata(dev);
> > +       fdt_addr_t addr;
> > +
> > +       addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
> > +       if (addr == FDT_ADDR_T_NONE)
> > +               return -EINVAL;
> > +
> > +       plat->base = addr;
> > +       plat->clk = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "clock", 1);
> > +       plat->type = dev_get_driver_data(dev);
> > +       return 0;
> > +}
> > +#endif
> > +
> >  U_BOOT_DRIVER(serial_sh) = {
> >         .name   = "serial_sh",
> >         .id     = UCLASS_SERIAL,
> > +       .of_match = of_match_ptr(sh_serial_id),
> > +       .ofdata_to_platdata = of_match_ptr(sh_serial_ofdata_to_platdata),
> > +       .platdata_auto_alloc_size = sizeof(struct sh_serial_platdata),
> >         .probe  = sh_serial_probe,
> >         .ops    = &sh_serial_ops,
> >         .flags  = DM_FLAG_PRE_RELOC,
> > --
> > 2.1.4
> >
> 
> 
> 
> -- 
> Nobuhiro Iwamatsu
>    iwamatsu at {nigauri.org / debian.org}
>    GPG ID: 40AD1FA6
diff mbox

Patch

diff --git a/doc/device-tree-bindings/serial/sh.txt b/doc/device-tree-bindings/serial/sh.txt
new file mode 100644
index 0000000..b23b135
--- /dev/null
+++ b/doc/device-tree-bindings/serial/sh.txt
@@ -0,0 +1,6 @@ 
+* Renesas SCI serial interface
+
+Required properties:
+- compatible: must be "renesas,scif" or "renesas,scifa"
+- reg: exactly one register range with length
+- clock: input clock frequency for the SCI unit
diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c
index 8693c1e..32b2bf0 100644
--- a/drivers/serial/serial_sh.c
+++ b/drivers/serial/serial_sh.c
@@ -17,6 +17,8 @@ 
 #include <dm/platform_data/serial_sh.h>
 #include "serial_sh.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #if defined(CONFIG_CPU_SH7760) || \
 	defined(CONFIG_CPU_SH7780) || \
 	defined(CONFIG_CPU_SH7785) || \
@@ -201,10 +203,35 @@  static const struct dm_serial_ops sh_serial_ops = {
 	.setbrg = sh_serial_setbrg,
 };
 
+#ifdef CONFIG_OF_CONTROL
+static const struct udevice_id sh_serial_id[] = {
+	{.compatible = "renesas,scif", .data = PORT_SCIF},
+	{.compatible = "renesas,scifa", .data = PORT_SCIFA},
+	{}
+};
+
+static int sh_serial_ofdata_to_platdata(struct udevice *dev)
+{
+	struct sh_serial_platdata *plat = dev_get_platdata(dev);
+	fdt_addr_t addr;
+
+	addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
+	if (addr == FDT_ADDR_T_NONE)
+		return -EINVAL;
+
+	plat->base = addr;
+	plat->clk = fdtdec_get_int(gd->fdt_blob, dev->of_offset, "clock", 1);
+	plat->type = dev_get_driver_data(dev);
+	return 0;
+}
+#endif
+
 U_BOOT_DRIVER(serial_sh) = {
 	.name	= "serial_sh",
 	.id	= UCLASS_SERIAL,
+	.of_match = of_match_ptr(sh_serial_id),
+	.ofdata_to_platdata = of_match_ptr(sh_serial_ofdata_to_platdata),
+	.platdata_auto_alloc_size = sizeof(struct sh_serial_platdata),
 	.probe	= sh_serial_probe,
 	.ops	= &sh_serial_ops,
 	.flags	= DM_FLAG_PRE_RELOC,
--