diff for duplicates of <20150601083835.GE3329@x1> diff --git a/a/1.txt b/N1/1.txt index ffb4282..5bedc10 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -3,24 +3,22 @@ On Sat, 30 May 2015, Vaibhav Hiremath wrote: > Add DT support to the 88pm800 driver along with below properties > - marvell,88pm800-irq-write-clear : > Idicates whether interrupt status is cleared by write ->=20 +> > Also, creates the DT binding text file, > Documentation/devicetree/bindings/mfd/88pm800.txt ->=20 +> > Signed-off-by: Chao Xie <chao.xie@marvell.com> > Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> > --- -> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++= -++++++ +> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++ > drivers/mfd/88pm800.c | 39 ++++++++++++++++ These should be submitted separately. > 2 files changed, 96 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt ->=20 -> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Document= -ation/devicetree/bindings/mfd/88pm800.txt +> +> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt > new file mode 100644 > index 0000000..094951b > --- /dev/null @@ -37,8 +35,7 @@ ation/devicetree/bindings/mfd/88pm800.txt > + - The cell is the 88pm800 local IRQ number > + > +Optional parent device properties: -> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is c= -leared by write +> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write Drop the device name. These bindings should be as generic as possible. @@ -60,33 +57,33 @@ Surely regulators is 88pm80x-regulator, no? > + > +Example: > + -> + pmic: 88pm800@30 { -> + compatible =3D "marvell,88pm800"; -> + reg =3D <0x30>; -> + interrupts =3D <0 77 0x4>; +> + pmic: 88pm800 at 30 { +> + compatible = "marvell,88pm800"; +> + reg = <0x30>; +> + interrupts = <0 77 0x4>; Please use the #defines in include/dt-bindings/ -> + interrupt-parent =3D <&gic>; +> + interrupt-parent = <&gic>; > + interrupt-controller; -> + #interrupt-cells =3D <1>; +> + #interrupt-cells = <1>; > + > + marvell,88pm800-irq-write-clr; > + > + regulators { -> + compatible =3D "marvell,88pm80x-regulator"; +> + compatible = "marvell,88pm80x-regulator"; > + > + buck1a: BUCK1A { -> + regulator-compatible =3D "88PM800-BUCK1A"; -> + regulator-min-microvolt =3D <600000>; -> + regulator-max-microvolt =3D <1800000>; +> + regulator-compatible = "88PM800-BUCK1A"; +> + regulator-min-microvolt = <600000>; +> + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + ldo1: LDO1 { -> + regulator-compatible =3D "88PM800-LDO1"; -> + regulator-min-microvolt =3D <1700000>; -> + regulator-max-microvolt =3D <3300000>; +> + regulator-compatible = "88PM800-LDO1"; +> + regulator-min-microvolt = <1700000>; +> + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; @@ -95,7 +92,7 @@ Please use the #defines in include/dt-bindings/ '\n' here. > + rtc { -> + compatible =3D "marvell,88pm80x-rtc"; +> + compatible = "marvell,88pm80x-rtc"; > + }; > + }; > diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c @@ -107,50 +104,49 @@ Please use the #defines in include/dt-bindings/ > #include <linux/mfd/88pm80x.h> > #include <linux/slab.h> > +#include <linux/of_device.h> -> =20 +> > /* Interrupt Registers */ > #define PM800_INT_STATUS1 (0x05) -> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = -=3D { +> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = { > }; > MODULE_DEVICE_TABLE(i2c, pm80x_id_table); -> =20 -> +static const struct of_device_id pm80x_of_match_table[] =3D { -> + { .compatible =3D "marvell,88pm800", }, +> +> +static const struct of_device_id pm80x_of_match_table[] = { +> + { .compatible = "marvell,88pm800", }, > + {}, > +}; > + -> static struct resource rtc_resources[] =3D { +> static struct resource rtc_resources[] = { > { -> .name =3D "88pm80x-rtc", -> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] =3D { -> static struct mfd_cell rtc_devs[] =3D { +> .name = "88pm80x-rtc", +> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = { +> static struct mfd_cell rtc_devs[] = { > { -> .name =3D "88pm80x-rtc", -> + .of_compatible =3D "marvell,88pm80x-rtc", -> .num_resources =3D ARRAY_SIZE(rtc_resources), -> .resources =3D &rtc_resources[0], -> .id =3D -1, -> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] =3D { -> static const struct mfd_cell onkey_devs[] =3D { +> .name = "88pm80x-rtc", +> + .of_compatible = "marvell,88pm80x-rtc", +> .num_resources = ARRAY_SIZE(rtc_resources), +> .resources = &rtc_resources[0], +> .id = -1, +> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = { +> static const struct mfd_cell onkey_devs[] = { > { -> .name =3D "88pm80x-onkey", -> + .of_compatible =3D "marvell,88pm80x-onkey", -> .num_resources =3D 1, -> .resources =3D &onkey_resources[0], -> .id =3D -1, -> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] =3D { -> static const struct mfd_cell regulator_devs[] =3D { +> .name = "88pm80x-onkey", +> + .of_compatible = "marvell,88pm80x-onkey", +> .num_resources = 1, +> .resources = &onkey_resources[0], +> .id = -1, +> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = { +> static const struct mfd_cell regulator_devs[] = { > { -> .name =3D "88pm80x-regulator", -> + .of_compatible =3D "marvell,88pm80x-regulator", -> .id =3D -1, +> .name = "88pm80x-regulator", +> + .of_compatible = "marvell,88pm80x-regulator", +> .id = -1, > }, > }; > @@ -538,14 +547,43 @@ out: > return ret; > } -> =20 +> > +static int pm800_probe_dt(struct device_node *np, > + struct device *dev, @@ -158,7 +154,7 @@ Do you even use dev? > + struct pm80x_platform_data *pdata) > +{ -> + pdata->irq_mode =3D +> + pdata->irq_mode = > + of_property_read_bool(np, "marvell,88pm800-irq-write-clear"); You write a new function for this? @@ -173,15 +169,15 @@ Superfluous '\n'. > static int pm800_probe(struct i2c_client *client, > const struct i2c_device_id *id) > { -> int ret =3D 0; +> int ret = 0; > struct pm80x_chip *chip; -> struct pm80x_platform_data *pdata =3D dev_get_platdata(&client->dev); -> + struct device_node *node =3D client->dev.of_node; +> struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev); +> + struct device_node *node = client->dev.of_node; It's more common to use 'np'. > struct pm80x_subchip *subchip; -> =20 +> > + if (!pdata && !node) { > + dev_err(&client->dev, > + "pm80x requires platform data or of_node\n"); @@ -189,45 +185,32 @@ It's more common to use 'np'. > + } > + > + if (!pdata) { -> + pdata =3D devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); +> + pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); > + if (!pdata) { > + dev_err(&client->dev, "failed to allocaate memory\n"); > + return -ENOMEM; > + } -> + ret =3D pm800_probe_dt(node, &client->dev, pdata); +> + ret = pm800_probe_dt(node, &client->dev, pdata); > + if (ret) > + return ret; > + } All this for a single attribute? Please simplify. -> ret =3D pm80x_init(client); +> ret = pm80x_init(client); > if (ret) { > dev_err(&client->dev, "pm800_init fail\n"); -> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver =3D { -> .name =3D "88PM800", -> .owner =3D THIS_MODULE, -> .pm =3D &pm80x_pm_ops, -> + .of_match_table =3D pm80x_of_match_table, +> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver = { +> .name = "88PM800", +> .owner = THIS_MODULE, +> .pm = &pm80x_pm_ops, +> + .of_match_table = pm80x_of_match_table, > }, -> .probe =3D pm800_probe, -> .remove =3D pm800_remove, +> .probe = pm800_probe, +> .remove = pm800_remove, ---=20 +-- Lee Jones Linaro STMicroelectronics Landing Team Lead -Linaro.org =E2=94=82 Open source software for ARM SoCs +Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog - ---=20 ---=20 -You received this message because you are subscribed to "rtc-linux". -Membership options at http://groups.google.com/group/rtc-linux . -Please read http://groups.google.com/group/rtc-linux/web/checklist -before submitting a driver. ----=20 -You received this message because you are subscribed to the Google Groups "= -rtc-linux" group. -To unsubscribe from this group and stop receiving emails from it, send an e= -mail to rtc-linux+unsubscribe@googlegroups.com. -For more options, visit https://groups.google.com/d/optout. diff --git a/a/content_digest b/N1/content_digest index 5481853..99af76d 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,18 +1,9 @@ "ref\01432937962-4537-1-git-send-email-vaibhav.hiremath@linaro.org\0" "ref\01432937962-4537-2-git-send-email-vaibhav.hiremath@linaro.org\0" - "From\0Lee Jones <lee.jones@linaro.org>\0" - "Subject\0[rtc-linux] Re: [PATCH 1/4] mfd: 88pm800: add device tree support\0" + "From\0lee.jones@linaro.org (Lee Jones)\0" + "Subject\0[PATCH 1/4] mfd: 88pm800: add device tree support\0" "Date\0Mon, 1 Jun 2015 09:38:35 +0100\0" - "To\0Vaibhav Hiremath <vaibhav.hiremath@linaro.org>\0" - "Cc\0linux-arm-kernel@lists.infradead.org" - robh+dt@kernel.org - devicetree@vger.kernel.org - linux-kernel@vger.kernel.org - rtc-linux@googlegroups.com - sameo@linux.intel.com - a.zummo@towertech.it - alexandre.belloni@free-electrons.com - " Chao Xie <chao.xie@marvell.com>\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "On Sat, 30 May 2015, Vaibhav Hiremath wrote:\n" @@ -20,24 +11,22 @@ "> Add DT support to the 88pm800 driver along with below properties\n" "> \t- marvell,88pm800-irq-write-clear :\n" "> \t Idicates whether interrupt status is cleared by write\n" - ">=20\n" + "> \n" "> Also, creates the DT binding text file,\n" "> Documentation/devicetree/bindings/mfd/88pm800.txt\n" - ">=20\n" + "> \n" "> Signed-off-by: Chao Xie <chao.xie@marvell.com>\n" "> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>\n" "> ---\n" - "> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++=\n" - "++++++\n" + "> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++\n" "> drivers/mfd/88pm800.c | 39 ++++++++++++++++\n" "\n" "These should be submitted separately.\n" "\n" "> 2 files changed, 96 insertions(+)\n" "> create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt\n" - ">=20\n" - "> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Document=\n" - "ation/devicetree/bindings/mfd/88pm800.txt\n" + "> \n" + "> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt\n" "> new file mode 100644\n" "> index 0000000..094951b\n" "> --- /dev/null\n" @@ -54,8 +43,7 @@ "> +\t\t- The cell is the 88pm800 local IRQ number\n" "> +\n" "> +Optional parent device properties:\n" - "> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is c=\n" - "leared by write\n" + "> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write\n" "\n" "Drop the device name. These bindings should be as generic as possible.\n" "\n" @@ -77,33 +65,33 @@ "> +\n" "> +Example:\n" "> +\n" - "> +\tpmic: 88pm800@30 {\n" - "> +\t\tcompatible =3D \"marvell,88pm800\";\n" - "> +\t\treg =3D <0x30>;\n" - "> +\t\tinterrupts =3D <0 77 0x4>;\n" + "> +\tpmic: 88pm800 at 30 {\n" + "> +\t\tcompatible = \"marvell,88pm800\";\n" + "> +\t\treg = <0x30>;\n" + "> +\t\tinterrupts = <0 77 0x4>;\n" "\n" "Please use the #defines in include/dt-bindings/\n" "\n" - "> +\t\tinterrupt-parent =3D <&gic>;\n" + "> +\t\tinterrupt-parent = <&gic>;\n" "> +\t\tinterrupt-controller;\n" - "> +\t\t#interrupt-cells =3D <1>;\n" + "> +\t\t#interrupt-cells = <1>;\n" "> +\n" "> +\t\tmarvell,88pm800-irq-write-clr;\n" "> +\n" "> +\t\tregulators {\n" - "> +\t\t\tcompatible =3D \"marvell,88pm80x-regulator\";\n" + "> +\t\t\tcompatible = \"marvell,88pm80x-regulator\";\n" "> +\n" "> +\t\t\tbuck1a: BUCK1A {\n" - "> +\t\t\t\tregulator-compatible =3D \"88PM800-BUCK1A\";\n" - "> +\t\t\t\tregulator-min-microvolt =3D <600000>;\n" - "> +\t\t\t\tregulator-max-microvolt =3D <1800000>;\n" + "> +\t\t\t\tregulator-compatible = \"88PM800-BUCK1A\";\n" + "> +\t\t\t\tregulator-min-microvolt = <600000>;\n" + "> +\t\t\t\tregulator-max-microvolt = <1800000>;\n" "> +\t\t\t\tregulator-boot-on;\n" "> +\t\t\t\tregulator-always-on;\n" "> +\t\t\t};\n" "> +\t\t\tldo1: LDO1 {\n" - "> +\t\t\t\tregulator-compatible =3D \"88PM800-LDO1\";\n" - "> +\t\t\t\tregulator-min-microvolt =3D <1700000>;\n" - "> +\t\t\t\tregulator-max-microvolt =3D <3300000>;\n" + "> +\t\t\t\tregulator-compatible = \"88PM800-LDO1\";\n" + "> +\t\t\t\tregulator-min-microvolt = <1700000>;\n" + "> +\t\t\t\tregulator-max-microvolt = <3300000>;\n" "> +\t\t\t\tregulator-boot-on;\n" "> +\t\t\t\tregulator-always-on;\n" "> +\t\t\t};\n" @@ -112,7 +100,7 @@ "'\\n' here.\n" "\n" "> +\t\trtc {\n" - "> +\t\t\tcompatible =3D \"marvell,88pm80x-rtc\";\n" + "> +\t\t\tcompatible = \"marvell,88pm80x-rtc\";\n" "> +\t\t};\n" "> +\t};\n" "> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c\n" @@ -124,50 +112,49 @@ "> #include <linux/mfd/88pm80x.h>\n" "> #include <linux/slab.h>\n" "> +#include <linux/of_device.h>\n" - "> =20\n" + "> \n" "> /* Interrupt Registers */\n" "> #define PM800_INT_STATUS1\t\t(0x05)\n" - "> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] =\n" - "=3D {\n" + "> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = {\n" "> };\n" "> MODULE_DEVICE_TABLE(i2c, pm80x_id_table);\n" - "> =20\n" - "> +static const struct of_device_id pm80x_of_match_table[] =3D {\n" - "> +\t{ .compatible =3D \"marvell,88pm800\", },\n" + "> \n" + "> +static const struct of_device_id pm80x_of_match_table[] = {\n" + "> +\t{ .compatible = \"marvell,88pm800\", },\n" "> +\t{},\n" "> +};\n" "> +\n" - "> static struct resource rtc_resources[] =3D {\n" + "> static struct resource rtc_resources[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-rtc\",\n" - "> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] =3D {\n" - "> static struct mfd_cell rtc_devs[] =3D {\n" + "> \t .name = \"88pm80x-rtc\",\n" + "> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = {\n" + "> static struct mfd_cell rtc_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-rtc\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-rtc\",\n" - "> \t .num_resources =3D ARRAY_SIZE(rtc_resources),\n" - "> \t .resources =3D &rtc_resources[0],\n" - "> \t .id =3D -1,\n" - "> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] =3D {\n" - "> static const struct mfd_cell onkey_devs[] =3D {\n" + "> \t .name = \"88pm80x-rtc\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-rtc\",\n" + "> \t .num_resources = ARRAY_SIZE(rtc_resources),\n" + "> \t .resources = &rtc_resources[0],\n" + "> \t .id = -1,\n" + "> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = {\n" + "> static const struct mfd_cell onkey_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-onkey\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-onkey\",\n" - "> \t .num_resources =3D 1,\n" - "> \t .resources =3D &onkey_resources[0],\n" - "> \t .id =3D -1,\n" - "> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] =3D {\n" - "> static const struct mfd_cell regulator_devs[] =3D {\n" + "> \t .name = \"88pm80x-onkey\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-onkey\",\n" + "> \t .num_resources = 1,\n" + "> \t .resources = &onkey_resources[0],\n" + "> \t .id = -1,\n" + "> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = {\n" + "> static const struct mfd_cell regulator_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-regulator\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-regulator\",\n" - "> \t .id =3D -1,\n" + "> \t .name = \"88pm80x-regulator\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-regulator\",\n" + "> \t .id = -1,\n" "> \t},\n" "> };\n" "> @@ -538,14 +547,43 @@ out:\n" "> \treturn ret;\n" "> }\n" - "> =20\n" + "> \n" "> +static int pm800_probe_dt(struct device_node *np,\n" "> +\t\t\t struct device *dev,\n" "\n" @@ -175,7 +162,7 @@ "\n" "> +\t\t\t struct pm80x_platform_data *pdata)\n" "> +{\n" - "> +\tpdata->irq_mode =3D\n" + "> +\tpdata->irq_mode =\n" "> +\t\tof_property_read_bool(np, \"marvell,88pm800-irq-write-clear\");\n" "\n" "You write a new function for this?\n" @@ -190,15 +177,15 @@ "> static int pm800_probe(struct i2c_client *client,\n" "> \t\t\t\t const struct i2c_device_id *id)\n" "> {\n" - "> \tint ret =3D 0;\n" + "> \tint ret = 0;\n" "> \tstruct pm80x_chip *chip;\n" - "> \tstruct pm80x_platform_data *pdata =3D dev_get_platdata(&client->dev);\n" - "> +\tstruct device_node *node =3D client->dev.of_node;\n" + "> \tstruct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);\n" + "> +\tstruct device_node *node = client->dev.of_node;\n" "\n" "It's more common to use 'np'.\n" "\n" "> \tstruct pm80x_subchip *subchip;\n" - "> =20\n" + "> \n" "> +\tif (!pdata && !node) {\n" "> +\t\tdev_err(&client->dev,\n" "> +\t\t\t\"pm80x requires platform data or of_node\\n\");\n" @@ -206,47 +193,34 @@ "> +\t}\n" "> +\n" "> +\tif (!pdata) {\n" - "> +\t\tpdata =3D devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);\n" + "> +\t\tpdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);\n" "> +\t\tif (!pdata) {\n" "> +\t\t\tdev_err(&client->dev, \"failed to allocaate memory\\n\");\n" "> +\t\t\treturn -ENOMEM;\n" "> +\t\t}\n" - "> +\t\tret =3D pm800_probe_dt(node, &client->dev, pdata);\n" + "> +\t\tret = pm800_probe_dt(node, &client->dev, pdata);\n" "> +\t\tif (ret)\n" "> +\t\t\treturn ret;\n" "> +\t}\n" "\n" "All this for a single attribute? Please simplify.\n" "\n" - "> \tret =3D pm80x_init(client);\n" + "> \tret = pm80x_init(client);\n" "> \tif (ret) {\n" "> \t\tdev_err(&client->dev, \"pm800_init fail\\n\");\n" - "> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver =3D {\n" - "> \t\t.name =3D \"88PM800\",\n" - "> \t\t.owner =3D THIS_MODULE,\n" - "> \t\t.pm =3D &pm80x_pm_ops,\n" - "> +\t\t.of_match_table\t=3D pm80x_of_match_table,\n" + "> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver = {\n" + "> \t\t.name = \"88PM800\",\n" + "> \t\t.owner = THIS_MODULE,\n" + "> \t\t.pm = &pm80x_pm_ops,\n" + "> +\t\t.of_match_table\t= pm80x_of_match_table,\n" "> \t\t},\n" - "> \t.probe =3D pm800_probe,\n" - "> \t.remove =3D pm800_remove,\n" + "> \t.probe = pm800_probe,\n" + "> \t.remove = pm800_remove,\n" "\n" - "--=20\n" + "-- \n" "Lee Jones\n" "Linaro STMicroelectronics Landing Team Lead\n" - "Linaro.org =E2=94=82 Open source software for ARM SoCs\n" - "Follow Linaro: Facebook | Twitter | Blog\n" - "\n" - "--=20\n" - "--=20\n" - "You received this message because you are subscribed to \"rtc-linux\".\n" - "Membership options at http://groups.google.com/group/rtc-linux .\n" - "Please read http://groups.google.com/group/rtc-linux/web/checklist\n" - "before submitting a driver.\n" - "---=20\n" - "You received this message because you are subscribed to the Google Groups \"=\n" - "rtc-linux\" group.\n" - "To unsubscribe from this group and stop receiving emails from it, send an e=\n" - "mail to rtc-linux+unsubscribe@googlegroups.com.\n" - For more options, visit https://groups.google.com/d/optout. + "Linaro.org ? Open source software for ARM SoCs\n" + Follow Linaro: Facebook | Twitter | Blog -07c4bdd80349c8b734eabb244f0e901759ee0fb688c1c82eb1aedc8d730702fd +060a0650a5b9ffdc5240e5a694ef2136f73be7a6bf8a179244e1fdad888fbeab
diff --git a/a/1.txt b/N2/1.txt index ffb4282..6383c4a 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -3,24 +3,22 @@ On Sat, 30 May 2015, Vaibhav Hiremath wrote: > Add DT support to the 88pm800 driver along with below properties > - marvell,88pm800-irq-write-clear : > Idicates whether interrupt status is cleared by write ->=20 +> > Also, creates the DT binding text file, > Documentation/devicetree/bindings/mfd/88pm800.txt ->=20 -> Signed-off-by: Chao Xie <chao.xie@marvell.com> -> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> +> +> Signed-off-by: Chao Xie <chao.xie-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org> +> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > --- -> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++= -++++++ +> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++ > drivers/mfd/88pm800.c | 39 ++++++++++++++++ These should be submitted separately. > 2 files changed, 96 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt ->=20 -> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Document= -ation/devicetree/bindings/mfd/88pm800.txt +> +> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt > new file mode 100644 > index 0000000..094951b > --- /dev/null @@ -37,8 +35,7 @@ ation/devicetree/bindings/mfd/88pm800.txt > + - The cell is the 88pm800 local IRQ number > + > +Optional parent device properties: -> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is c= -leared by write +> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write Drop the device name. These bindings should be as generic as possible. @@ -61,32 +58,32 @@ Surely regulators is 88pm80x-regulator, no? > +Example: > + > + pmic: 88pm800@30 { -> + compatible =3D "marvell,88pm800"; -> + reg =3D <0x30>; -> + interrupts =3D <0 77 0x4>; +> + compatible = "marvell,88pm800"; +> + reg = <0x30>; +> + interrupts = <0 77 0x4>; Please use the #defines in include/dt-bindings/ -> + interrupt-parent =3D <&gic>; +> + interrupt-parent = <&gic>; > + interrupt-controller; -> + #interrupt-cells =3D <1>; +> + #interrupt-cells = <1>; > + > + marvell,88pm800-irq-write-clr; > + > + regulators { -> + compatible =3D "marvell,88pm80x-regulator"; +> + compatible = "marvell,88pm80x-regulator"; > + > + buck1a: BUCK1A { -> + regulator-compatible =3D "88PM800-BUCK1A"; -> + regulator-min-microvolt =3D <600000>; -> + regulator-max-microvolt =3D <1800000>; +> + regulator-compatible = "88PM800-BUCK1A"; +> + regulator-min-microvolt = <600000>; +> + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + ldo1: LDO1 { -> + regulator-compatible =3D "88PM800-LDO1"; -> + regulator-min-microvolt =3D <1700000>; -> + regulator-max-microvolt =3D <3300000>; +> + regulator-compatible = "88PM800-LDO1"; +> + regulator-min-microvolt = <1700000>; +> + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; @@ -95,7 +92,7 @@ Please use the #defines in include/dt-bindings/ '\n' here. > + rtc { -> + compatible =3D "marvell,88pm80x-rtc"; +> + compatible = "marvell,88pm80x-rtc"; > + }; > + }; > diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c @@ -107,50 +104,49 @@ Please use the #defines in include/dt-bindings/ > #include <linux/mfd/88pm80x.h> > #include <linux/slab.h> > +#include <linux/of_device.h> -> =20 +> > /* Interrupt Registers */ > #define PM800_INT_STATUS1 (0x05) -> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = -=3D { +> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = { > }; > MODULE_DEVICE_TABLE(i2c, pm80x_id_table); -> =20 -> +static const struct of_device_id pm80x_of_match_table[] =3D { -> + { .compatible =3D "marvell,88pm800", }, +> +> +static const struct of_device_id pm80x_of_match_table[] = { +> + { .compatible = "marvell,88pm800", }, > + {}, > +}; > + -> static struct resource rtc_resources[] =3D { +> static struct resource rtc_resources[] = { > { -> .name =3D "88pm80x-rtc", -> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] =3D { -> static struct mfd_cell rtc_devs[] =3D { +> .name = "88pm80x-rtc", +> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = { +> static struct mfd_cell rtc_devs[] = { > { -> .name =3D "88pm80x-rtc", -> + .of_compatible =3D "marvell,88pm80x-rtc", -> .num_resources =3D ARRAY_SIZE(rtc_resources), -> .resources =3D &rtc_resources[0], -> .id =3D -1, -> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] =3D { -> static const struct mfd_cell onkey_devs[] =3D { +> .name = "88pm80x-rtc", +> + .of_compatible = "marvell,88pm80x-rtc", +> .num_resources = ARRAY_SIZE(rtc_resources), +> .resources = &rtc_resources[0], +> .id = -1, +> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = { +> static const struct mfd_cell onkey_devs[] = { > { -> .name =3D "88pm80x-onkey", -> + .of_compatible =3D "marvell,88pm80x-onkey", -> .num_resources =3D 1, -> .resources =3D &onkey_resources[0], -> .id =3D -1, -> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] =3D { -> static const struct mfd_cell regulator_devs[] =3D { +> .name = "88pm80x-onkey", +> + .of_compatible = "marvell,88pm80x-onkey", +> .num_resources = 1, +> .resources = &onkey_resources[0], +> .id = -1, +> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = { +> static const struct mfd_cell regulator_devs[] = { > { -> .name =3D "88pm80x-regulator", -> + .of_compatible =3D "marvell,88pm80x-regulator", -> .id =3D -1, +> .name = "88pm80x-regulator", +> + .of_compatible = "marvell,88pm80x-regulator", +> .id = -1, > }, > }; > @@ -538,14 +547,43 @@ out: > return ret; > } -> =20 +> > +static int pm800_probe_dt(struct device_node *np, > + struct device *dev, @@ -158,7 +154,7 @@ Do you even use dev? > + struct pm80x_platform_data *pdata) > +{ -> + pdata->irq_mode =3D +> + pdata->irq_mode = > + of_property_read_bool(np, "marvell,88pm800-irq-write-clear"); You write a new function for this? @@ -173,15 +169,15 @@ Superfluous '\n'. > static int pm800_probe(struct i2c_client *client, > const struct i2c_device_id *id) > { -> int ret =3D 0; +> int ret = 0; > struct pm80x_chip *chip; -> struct pm80x_platform_data *pdata =3D dev_get_platdata(&client->dev); -> + struct device_node *node =3D client->dev.of_node; +> struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev); +> + struct device_node *node = client->dev.of_node; It's more common to use 'np'. > struct pm80x_subchip *subchip; -> =20 +> > + if (!pdata && !node) { > + dev_err(&client->dev, > + "pm80x requires platform data or of_node\n"); @@ -189,45 +185,36 @@ It's more common to use 'np'. > + } > + > + if (!pdata) { -> + pdata =3D devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); +> + pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); > + if (!pdata) { > + dev_err(&client->dev, "failed to allocaate memory\n"); > + return -ENOMEM; > + } -> + ret =3D pm800_probe_dt(node, &client->dev, pdata); +> + ret = pm800_probe_dt(node, &client->dev, pdata); > + if (ret) > + return ret; > + } All this for a single attribute? Please simplify. -> ret =3D pm80x_init(client); +> ret = pm80x_init(client); > if (ret) { > dev_err(&client->dev, "pm800_init fail\n"); -> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver =3D { -> .name =3D "88PM800", -> .owner =3D THIS_MODULE, -> .pm =3D &pm80x_pm_ops, -> + .of_match_table =3D pm80x_of_match_table, +> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver = { +> .name = "88PM800", +> .owner = THIS_MODULE, +> .pm = &pm80x_pm_ops, +> + .of_match_table = pm80x_of_match_table, > }, -> .probe =3D pm800_probe, -> .remove =3D pm800_remove, +> .probe = pm800_probe, +> .remove = pm800_remove, ---=20 +-- Lee Jones Linaro STMicroelectronics Landing Team Lead -Linaro.org =E2=94=82 Open source software for ARM SoCs +Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog - ---=20 ---=20 -You received this message because you are subscribed to "rtc-linux". -Membership options at http://groups.google.com/group/rtc-linux . -Please read http://groups.google.com/group/rtc-linux/web/checklist -before submitting a driver. ----=20 -You received this message because you are subscribed to the Google Groups "= -rtc-linux" group. -To unsubscribe from this group and stop receiving emails from it, send an e= -mail to rtc-linux+unsubscribe@googlegroups.com. -For more options, visit https://groups.google.com/d/optout. +-- +To unsubscribe from this list: send the line "unsubscribe devicetree" in +the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org +More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N2/content_digest index 5481853..742a811 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -1,18 +1,19 @@ "ref\01432937962-4537-1-git-send-email-vaibhav.hiremath@linaro.org\0" "ref\01432937962-4537-2-git-send-email-vaibhav.hiremath@linaro.org\0" - "From\0Lee Jones <lee.jones@linaro.org>\0" - "Subject\0[rtc-linux] Re: [PATCH 1/4] mfd: 88pm800: add device tree support\0" + "ref\01432937962-4537-2-git-send-email-vaibhav.hiremath-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org\0" + "From\0Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>\0" + "Subject\0Re: [PATCH 1/4] mfd: 88pm800: add device tree support\0" "Date\0Mon, 1 Jun 2015 09:38:35 +0100\0" - "To\0Vaibhav Hiremath <vaibhav.hiremath@linaro.org>\0" - "Cc\0linux-arm-kernel@lists.infradead.org" - robh+dt@kernel.org - devicetree@vger.kernel.org - linux-kernel@vger.kernel.org - rtc-linux@googlegroups.com - sameo@linux.intel.com - a.zummo@towertech.it - alexandre.belloni@free-electrons.com - " Chao Xie <chao.xie@marvell.com>\0" + "To\0Vaibhav Hiremath <vaibhav.hiremath-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>\0" + "Cc\0linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org" + robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org + devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org + linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org + rtc-linux-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org + sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org + a.zummo-BfzFCNDTiLLj+vYz1yj4TQ@public.gmane.org + alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org + " Chao Xie <chao.xie-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>\0" "\00:1\0" "b\0" "On Sat, 30 May 2015, Vaibhav Hiremath wrote:\n" @@ -20,24 +21,22 @@ "> Add DT support to the 88pm800 driver along with below properties\n" "> \t- marvell,88pm800-irq-write-clear :\n" "> \t Idicates whether interrupt status is cleared by write\n" - ">=20\n" + "> \n" "> Also, creates the DT binding text file,\n" "> Documentation/devicetree/bindings/mfd/88pm800.txt\n" - ">=20\n" - "> Signed-off-by: Chao Xie <chao.xie@marvell.com>\n" - "> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>\n" + "> \n" + "> Signed-off-by: Chao Xie <chao.xie-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>\n" + "> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>\n" "> ---\n" - "> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++=\n" - "++++++\n" + "> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++\n" "> drivers/mfd/88pm800.c | 39 ++++++++++++++++\n" "\n" "These should be submitted separately.\n" "\n" "> 2 files changed, 96 insertions(+)\n" "> create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt\n" - ">=20\n" - "> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Document=\n" - "ation/devicetree/bindings/mfd/88pm800.txt\n" + "> \n" + "> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt\n" "> new file mode 100644\n" "> index 0000000..094951b\n" "> --- /dev/null\n" @@ -54,8 +53,7 @@ "> +\t\t- The cell is the 88pm800 local IRQ number\n" "> +\n" "> +Optional parent device properties:\n" - "> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is c=\n" - "leared by write\n" + "> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write\n" "\n" "Drop the device name. These bindings should be as generic as possible.\n" "\n" @@ -78,32 +76,32 @@ "> +Example:\n" "> +\n" "> +\tpmic: 88pm800@30 {\n" - "> +\t\tcompatible =3D \"marvell,88pm800\";\n" - "> +\t\treg =3D <0x30>;\n" - "> +\t\tinterrupts =3D <0 77 0x4>;\n" + "> +\t\tcompatible = \"marvell,88pm800\";\n" + "> +\t\treg = <0x30>;\n" + "> +\t\tinterrupts = <0 77 0x4>;\n" "\n" "Please use the #defines in include/dt-bindings/\n" "\n" - "> +\t\tinterrupt-parent =3D <&gic>;\n" + "> +\t\tinterrupt-parent = <&gic>;\n" "> +\t\tinterrupt-controller;\n" - "> +\t\t#interrupt-cells =3D <1>;\n" + "> +\t\t#interrupt-cells = <1>;\n" "> +\n" "> +\t\tmarvell,88pm800-irq-write-clr;\n" "> +\n" "> +\t\tregulators {\n" - "> +\t\t\tcompatible =3D \"marvell,88pm80x-regulator\";\n" + "> +\t\t\tcompatible = \"marvell,88pm80x-regulator\";\n" "> +\n" "> +\t\t\tbuck1a: BUCK1A {\n" - "> +\t\t\t\tregulator-compatible =3D \"88PM800-BUCK1A\";\n" - "> +\t\t\t\tregulator-min-microvolt =3D <600000>;\n" - "> +\t\t\t\tregulator-max-microvolt =3D <1800000>;\n" + "> +\t\t\t\tregulator-compatible = \"88PM800-BUCK1A\";\n" + "> +\t\t\t\tregulator-min-microvolt = <600000>;\n" + "> +\t\t\t\tregulator-max-microvolt = <1800000>;\n" "> +\t\t\t\tregulator-boot-on;\n" "> +\t\t\t\tregulator-always-on;\n" "> +\t\t\t};\n" "> +\t\t\tldo1: LDO1 {\n" - "> +\t\t\t\tregulator-compatible =3D \"88PM800-LDO1\";\n" - "> +\t\t\t\tregulator-min-microvolt =3D <1700000>;\n" - "> +\t\t\t\tregulator-max-microvolt =3D <3300000>;\n" + "> +\t\t\t\tregulator-compatible = \"88PM800-LDO1\";\n" + "> +\t\t\t\tregulator-min-microvolt = <1700000>;\n" + "> +\t\t\t\tregulator-max-microvolt = <3300000>;\n" "> +\t\t\t\tregulator-boot-on;\n" "> +\t\t\t\tregulator-always-on;\n" "> +\t\t\t};\n" @@ -112,7 +110,7 @@ "'\\n' here.\n" "\n" "> +\t\trtc {\n" - "> +\t\t\tcompatible =3D \"marvell,88pm80x-rtc\";\n" + "> +\t\t\tcompatible = \"marvell,88pm80x-rtc\";\n" "> +\t\t};\n" "> +\t};\n" "> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c\n" @@ -124,50 +122,49 @@ "> #include <linux/mfd/88pm80x.h>\n" "> #include <linux/slab.h>\n" "> +#include <linux/of_device.h>\n" - "> =20\n" + "> \n" "> /* Interrupt Registers */\n" "> #define PM800_INT_STATUS1\t\t(0x05)\n" - "> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] =\n" - "=3D {\n" + "> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = {\n" "> };\n" "> MODULE_DEVICE_TABLE(i2c, pm80x_id_table);\n" - "> =20\n" - "> +static const struct of_device_id pm80x_of_match_table[] =3D {\n" - "> +\t{ .compatible =3D \"marvell,88pm800\", },\n" + "> \n" + "> +static const struct of_device_id pm80x_of_match_table[] = {\n" + "> +\t{ .compatible = \"marvell,88pm800\", },\n" "> +\t{},\n" "> +};\n" "> +\n" - "> static struct resource rtc_resources[] =3D {\n" + "> static struct resource rtc_resources[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-rtc\",\n" - "> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] =3D {\n" - "> static struct mfd_cell rtc_devs[] =3D {\n" + "> \t .name = \"88pm80x-rtc\",\n" + "> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = {\n" + "> static struct mfd_cell rtc_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-rtc\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-rtc\",\n" - "> \t .num_resources =3D ARRAY_SIZE(rtc_resources),\n" - "> \t .resources =3D &rtc_resources[0],\n" - "> \t .id =3D -1,\n" - "> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] =3D {\n" - "> static const struct mfd_cell onkey_devs[] =3D {\n" + "> \t .name = \"88pm80x-rtc\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-rtc\",\n" + "> \t .num_resources = ARRAY_SIZE(rtc_resources),\n" + "> \t .resources = &rtc_resources[0],\n" + "> \t .id = -1,\n" + "> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = {\n" + "> static const struct mfd_cell onkey_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-onkey\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-onkey\",\n" - "> \t .num_resources =3D 1,\n" - "> \t .resources =3D &onkey_resources[0],\n" - "> \t .id =3D -1,\n" - "> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] =3D {\n" - "> static const struct mfd_cell regulator_devs[] =3D {\n" + "> \t .name = \"88pm80x-onkey\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-onkey\",\n" + "> \t .num_resources = 1,\n" + "> \t .resources = &onkey_resources[0],\n" + "> \t .id = -1,\n" + "> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = {\n" + "> static const struct mfd_cell regulator_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-regulator\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-regulator\",\n" - "> \t .id =3D -1,\n" + "> \t .name = \"88pm80x-regulator\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-regulator\",\n" + "> \t .id = -1,\n" "> \t},\n" "> };\n" "> @@ -538,14 +547,43 @@ out:\n" "> \treturn ret;\n" "> }\n" - "> =20\n" + "> \n" "> +static int pm800_probe_dt(struct device_node *np,\n" "> +\t\t\t struct device *dev,\n" "\n" @@ -175,7 +172,7 @@ "\n" "> +\t\t\t struct pm80x_platform_data *pdata)\n" "> +{\n" - "> +\tpdata->irq_mode =3D\n" + "> +\tpdata->irq_mode =\n" "> +\t\tof_property_read_bool(np, \"marvell,88pm800-irq-write-clear\");\n" "\n" "You write a new function for this?\n" @@ -190,15 +187,15 @@ "> static int pm800_probe(struct i2c_client *client,\n" "> \t\t\t\t const struct i2c_device_id *id)\n" "> {\n" - "> \tint ret =3D 0;\n" + "> \tint ret = 0;\n" "> \tstruct pm80x_chip *chip;\n" - "> \tstruct pm80x_platform_data *pdata =3D dev_get_platdata(&client->dev);\n" - "> +\tstruct device_node *node =3D client->dev.of_node;\n" + "> \tstruct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);\n" + "> +\tstruct device_node *node = client->dev.of_node;\n" "\n" "It's more common to use 'np'.\n" "\n" "> \tstruct pm80x_subchip *subchip;\n" - "> =20\n" + "> \n" "> +\tif (!pdata && !node) {\n" "> +\t\tdev_err(&client->dev,\n" "> +\t\t\t\"pm80x requires platform data or of_node\\n\");\n" @@ -206,47 +203,38 @@ "> +\t}\n" "> +\n" "> +\tif (!pdata) {\n" - "> +\t\tpdata =3D devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);\n" + "> +\t\tpdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);\n" "> +\t\tif (!pdata) {\n" "> +\t\t\tdev_err(&client->dev, \"failed to allocaate memory\\n\");\n" "> +\t\t\treturn -ENOMEM;\n" "> +\t\t}\n" - "> +\t\tret =3D pm800_probe_dt(node, &client->dev, pdata);\n" + "> +\t\tret = pm800_probe_dt(node, &client->dev, pdata);\n" "> +\t\tif (ret)\n" "> +\t\t\treturn ret;\n" "> +\t}\n" "\n" "All this for a single attribute? Please simplify.\n" "\n" - "> \tret =3D pm80x_init(client);\n" + "> \tret = pm80x_init(client);\n" "> \tif (ret) {\n" "> \t\tdev_err(&client->dev, \"pm800_init fail\\n\");\n" - "> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver =3D {\n" - "> \t\t.name =3D \"88PM800\",\n" - "> \t\t.owner =3D THIS_MODULE,\n" - "> \t\t.pm =3D &pm80x_pm_ops,\n" - "> +\t\t.of_match_table\t=3D pm80x_of_match_table,\n" + "> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver = {\n" + "> \t\t.name = \"88PM800\",\n" + "> \t\t.owner = THIS_MODULE,\n" + "> \t\t.pm = &pm80x_pm_ops,\n" + "> +\t\t.of_match_table\t= pm80x_of_match_table,\n" "> \t\t},\n" - "> \t.probe =3D pm800_probe,\n" - "> \t.remove =3D pm800_remove,\n" + "> \t.probe = pm800_probe,\n" + "> \t.remove = pm800_remove,\n" "\n" - "--=20\n" + "-- \n" "Lee Jones\n" "Linaro STMicroelectronics Landing Team Lead\n" - "Linaro.org =E2=94=82 Open source software for ARM SoCs\n" + "Linaro.org \342\224\202 Open source software for ARM SoCs\n" "Follow Linaro: Facebook | Twitter | Blog\n" - "\n" - "--=20\n" - "--=20\n" - "You received this message because you are subscribed to \"rtc-linux\".\n" - "Membership options at http://groups.google.com/group/rtc-linux .\n" - "Please read http://groups.google.com/group/rtc-linux/web/checklist\n" - "before submitting a driver.\n" - "---=20\n" - "You received this message because you are subscribed to the Google Groups \"=\n" - "rtc-linux\" group.\n" - "To unsubscribe from this group and stop receiving emails from it, send an e=\n" - "mail to rtc-linux+unsubscribe@googlegroups.com.\n" - For more options, visit https://groups.google.com/d/optout. + "--\n" + "To unsubscribe from this list: send the line \"unsubscribe devicetree\" in\n" + "the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org\n" + More majordomo info at http://vger.kernel.org/majordomo-info.html -07c4bdd80349c8b734eabb244f0e901759ee0fb688c1c82eb1aedc8d730702fd +4ebd29c232db357344a7ccf2adf459520a817832edba891ae4181bce35837c5d
diff --git a/a/1.txt b/N3/1.txt index ffb4282..ad74ad6 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -3,24 +3,22 @@ On Sat, 30 May 2015, Vaibhav Hiremath wrote: > Add DT support to the 88pm800 driver along with below properties > - marvell,88pm800-irq-write-clear : > Idicates whether interrupt status is cleared by write ->=20 +> > Also, creates the DT binding text file, > Documentation/devicetree/bindings/mfd/88pm800.txt ->=20 +> > Signed-off-by: Chao Xie <chao.xie@marvell.com> > Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> > --- -> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++= -++++++ +> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++ > drivers/mfd/88pm800.c | 39 ++++++++++++++++ These should be submitted separately. > 2 files changed, 96 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt ->=20 -> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Document= -ation/devicetree/bindings/mfd/88pm800.txt +> +> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt > new file mode 100644 > index 0000000..094951b > --- /dev/null @@ -37,8 +35,7 @@ ation/devicetree/bindings/mfd/88pm800.txt > + - The cell is the 88pm800 local IRQ number > + > +Optional parent device properties: -> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is c= -leared by write +> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write Drop the device name. These bindings should be as generic as possible. @@ -61,32 +58,32 @@ Surely regulators is 88pm80x-regulator, no? > +Example: > + > + pmic: 88pm800@30 { -> + compatible =3D "marvell,88pm800"; -> + reg =3D <0x30>; -> + interrupts =3D <0 77 0x4>; +> + compatible = "marvell,88pm800"; +> + reg = <0x30>; +> + interrupts = <0 77 0x4>; Please use the #defines in include/dt-bindings/ -> + interrupt-parent =3D <&gic>; +> + interrupt-parent = <&gic>; > + interrupt-controller; -> + #interrupt-cells =3D <1>; +> + #interrupt-cells = <1>; > + > + marvell,88pm800-irq-write-clr; > + > + regulators { -> + compatible =3D "marvell,88pm80x-regulator"; +> + compatible = "marvell,88pm80x-regulator"; > + > + buck1a: BUCK1A { -> + regulator-compatible =3D "88PM800-BUCK1A"; -> + regulator-min-microvolt =3D <600000>; -> + regulator-max-microvolt =3D <1800000>; +> + regulator-compatible = "88PM800-BUCK1A"; +> + regulator-min-microvolt = <600000>; +> + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + regulator-always-on; > + }; > + ldo1: LDO1 { -> + regulator-compatible =3D "88PM800-LDO1"; -> + regulator-min-microvolt =3D <1700000>; -> + regulator-max-microvolt =3D <3300000>; +> + regulator-compatible = "88PM800-LDO1"; +> + regulator-min-microvolt = <1700000>; +> + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + regulator-always-on; > + }; @@ -95,7 +92,7 @@ Please use the #defines in include/dt-bindings/ '\n' here. > + rtc { -> + compatible =3D "marvell,88pm80x-rtc"; +> + compatible = "marvell,88pm80x-rtc"; > + }; > + }; > diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c @@ -107,50 +104,49 @@ Please use the #defines in include/dt-bindings/ > #include <linux/mfd/88pm80x.h> > #include <linux/slab.h> > +#include <linux/of_device.h> -> =20 +> > /* Interrupt Registers */ > #define PM800_INT_STATUS1 (0x05) -> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = -=3D { +> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = { > }; > MODULE_DEVICE_TABLE(i2c, pm80x_id_table); -> =20 -> +static const struct of_device_id pm80x_of_match_table[] =3D { -> + { .compatible =3D "marvell,88pm800", }, +> +> +static const struct of_device_id pm80x_of_match_table[] = { +> + { .compatible = "marvell,88pm800", }, > + {}, > +}; > + -> static struct resource rtc_resources[] =3D { +> static struct resource rtc_resources[] = { > { -> .name =3D "88pm80x-rtc", -> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] =3D { -> static struct mfd_cell rtc_devs[] =3D { +> .name = "88pm80x-rtc", +> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = { +> static struct mfd_cell rtc_devs[] = { > { -> .name =3D "88pm80x-rtc", -> + .of_compatible =3D "marvell,88pm80x-rtc", -> .num_resources =3D ARRAY_SIZE(rtc_resources), -> .resources =3D &rtc_resources[0], -> .id =3D -1, -> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] =3D { -> static const struct mfd_cell onkey_devs[] =3D { +> .name = "88pm80x-rtc", +> + .of_compatible = "marvell,88pm80x-rtc", +> .num_resources = ARRAY_SIZE(rtc_resources), +> .resources = &rtc_resources[0], +> .id = -1, +> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = { +> static const struct mfd_cell onkey_devs[] = { > { -> .name =3D "88pm80x-onkey", -> + .of_compatible =3D "marvell,88pm80x-onkey", -> .num_resources =3D 1, -> .resources =3D &onkey_resources[0], -> .id =3D -1, -> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] =3D { -> static const struct mfd_cell regulator_devs[] =3D { +> .name = "88pm80x-onkey", +> + .of_compatible = "marvell,88pm80x-onkey", +> .num_resources = 1, +> .resources = &onkey_resources[0], +> .id = -1, +> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = { +> static const struct mfd_cell regulator_devs[] = { > { -> .name =3D "88pm80x-regulator", -> + .of_compatible =3D "marvell,88pm80x-regulator", -> .id =3D -1, +> .name = "88pm80x-regulator", +> + .of_compatible = "marvell,88pm80x-regulator", +> .id = -1, > }, > }; > @@ -538,14 +547,43 @@ out: > return ret; > } -> =20 +> > +static int pm800_probe_dt(struct device_node *np, > + struct device *dev, @@ -158,7 +154,7 @@ Do you even use dev? > + struct pm80x_platform_data *pdata) > +{ -> + pdata->irq_mode =3D +> + pdata->irq_mode = > + of_property_read_bool(np, "marvell,88pm800-irq-write-clear"); You write a new function for this? @@ -173,15 +169,15 @@ Superfluous '\n'. > static int pm800_probe(struct i2c_client *client, > const struct i2c_device_id *id) > { -> int ret =3D 0; +> int ret = 0; > struct pm80x_chip *chip; -> struct pm80x_platform_data *pdata =3D dev_get_platdata(&client->dev); -> + struct device_node *node =3D client->dev.of_node; +> struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev); +> + struct device_node *node = client->dev.of_node; It's more common to use 'np'. > struct pm80x_subchip *subchip; -> =20 +> > + if (!pdata && !node) { > + dev_err(&client->dev, > + "pm80x requires platform data or of_node\n"); @@ -189,45 +185,32 @@ It's more common to use 'np'. > + } > + > + if (!pdata) { -> + pdata =3D devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); +> + pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL); > + if (!pdata) { > + dev_err(&client->dev, "failed to allocaate memory\n"); > + return -ENOMEM; > + } -> + ret =3D pm800_probe_dt(node, &client->dev, pdata); +> + ret = pm800_probe_dt(node, &client->dev, pdata); > + if (ret) > + return ret; > + } All this for a single attribute? Please simplify. -> ret =3D pm80x_init(client); +> ret = pm80x_init(client); > if (ret) { > dev_err(&client->dev, "pm800_init fail\n"); -> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver =3D { -> .name =3D "88PM800", -> .owner =3D THIS_MODULE, -> .pm =3D &pm80x_pm_ops, -> + .of_match_table =3D pm80x_of_match_table, +> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver = { +> .name = "88PM800", +> .owner = THIS_MODULE, +> .pm = &pm80x_pm_ops, +> + .of_match_table = pm80x_of_match_table, > }, -> .probe =3D pm800_probe, -> .remove =3D pm800_remove, +> .probe = pm800_probe, +> .remove = pm800_remove, ---=20 +-- Lee Jones Linaro STMicroelectronics Landing Team Lead -Linaro.org =E2=94=82 Open source software for ARM SoCs +Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog - ---=20 ---=20 -You received this message because you are subscribed to "rtc-linux". -Membership options at http://groups.google.com/group/rtc-linux . -Please read http://groups.google.com/group/rtc-linux/web/checklist -before submitting a driver. ----=20 -You received this message because you are subscribed to the Google Groups "= -rtc-linux" group. -To unsubscribe from this group and stop receiving emails from it, send an e= -mail to rtc-linux+unsubscribe@googlegroups.com. -For more options, visit https://groups.google.com/d/optout. diff --git a/a/content_digest b/N3/content_digest index 5481853..65fa71b 100644 --- a/a/content_digest +++ b/N3/content_digest @@ -1,7 +1,7 @@ "ref\01432937962-4537-1-git-send-email-vaibhav.hiremath@linaro.org\0" "ref\01432937962-4537-2-git-send-email-vaibhav.hiremath@linaro.org\0" "From\0Lee Jones <lee.jones@linaro.org>\0" - "Subject\0[rtc-linux] Re: [PATCH 1/4] mfd: 88pm800: add device tree support\0" + "Subject\0Re: [PATCH 1/4] mfd: 88pm800: add device tree support\0" "Date\0Mon, 1 Jun 2015 09:38:35 +0100\0" "To\0Vaibhav Hiremath <vaibhav.hiremath@linaro.org>\0" "Cc\0linux-arm-kernel@lists.infradead.org" @@ -20,24 +20,22 @@ "> Add DT support to the 88pm800 driver along with below properties\n" "> \t- marvell,88pm800-irq-write-clear :\n" "> \t Idicates whether interrupt status is cleared by write\n" - ">=20\n" + "> \n" "> Also, creates the DT binding text file,\n" "> Documentation/devicetree/bindings/mfd/88pm800.txt\n" - ">=20\n" + "> \n" "> Signed-off-by: Chao Xie <chao.xie@marvell.com>\n" "> Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>\n" "> ---\n" - "> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++=\n" - "++++++\n" + "> Documentation/devicetree/bindings/mfd/88pm800.txt | 57 +++++++++++++++++++++++\n" "> drivers/mfd/88pm800.c | 39 ++++++++++++++++\n" "\n" "These should be submitted separately.\n" "\n" "> 2 files changed, 96 insertions(+)\n" "> create mode 100644 Documentation/devicetree/bindings/mfd/88pm800.txt\n" - ">=20\n" - "> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Document=\n" - "ation/devicetree/bindings/mfd/88pm800.txt\n" + "> \n" + "> diff --git a/Documentation/devicetree/bindings/mfd/88pm800.txt b/Documentation/devicetree/bindings/mfd/88pm800.txt\n" "> new file mode 100644\n" "> index 0000000..094951b\n" "> --- /dev/null\n" @@ -54,8 +52,7 @@ "> +\t\t- The cell is the 88pm800 local IRQ number\n" "> +\n" "> +Optional parent device properties:\n" - "> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is c=\n" - "leared by write\n" + "> +- marvell,88pm800-irq-write-clr: indicates whether interrupt status is cleared by write\n" "\n" "Drop the device name. These bindings should be as generic as possible.\n" "\n" @@ -78,32 +75,32 @@ "> +Example:\n" "> +\n" "> +\tpmic: 88pm800@30 {\n" - "> +\t\tcompatible =3D \"marvell,88pm800\";\n" - "> +\t\treg =3D <0x30>;\n" - "> +\t\tinterrupts =3D <0 77 0x4>;\n" + "> +\t\tcompatible = \"marvell,88pm800\";\n" + "> +\t\treg = <0x30>;\n" + "> +\t\tinterrupts = <0 77 0x4>;\n" "\n" "Please use the #defines in include/dt-bindings/\n" "\n" - "> +\t\tinterrupt-parent =3D <&gic>;\n" + "> +\t\tinterrupt-parent = <&gic>;\n" "> +\t\tinterrupt-controller;\n" - "> +\t\t#interrupt-cells =3D <1>;\n" + "> +\t\t#interrupt-cells = <1>;\n" "> +\n" "> +\t\tmarvell,88pm800-irq-write-clr;\n" "> +\n" "> +\t\tregulators {\n" - "> +\t\t\tcompatible =3D \"marvell,88pm80x-regulator\";\n" + "> +\t\t\tcompatible = \"marvell,88pm80x-regulator\";\n" "> +\n" "> +\t\t\tbuck1a: BUCK1A {\n" - "> +\t\t\t\tregulator-compatible =3D \"88PM800-BUCK1A\";\n" - "> +\t\t\t\tregulator-min-microvolt =3D <600000>;\n" - "> +\t\t\t\tregulator-max-microvolt =3D <1800000>;\n" + "> +\t\t\t\tregulator-compatible = \"88PM800-BUCK1A\";\n" + "> +\t\t\t\tregulator-min-microvolt = <600000>;\n" + "> +\t\t\t\tregulator-max-microvolt = <1800000>;\n" "> +\t\t\t\tregulator-boot-on;\n" "> +\t\t\t\tregulator-always-on;\n" "> +\t\t\t};\n" "> +\t\t\tldo1: LDO1 {\n" - "> +\t\t\t\tregulator-compatible =3D \"88PM800-LDO1\";\n" - "> +\t\t\t\tregulator-min-microvolt =3D <1700000>;\n" - "> +\t\t\t\tregulator-max-microvolt =3D <3300000>;\n" + "> +\t\t\t\tregulator-compatible = \"88PM800-LDO1\";\n" + "> +\t\t\t\tregulator-min-microvolt = <1700000>;\n" + "> +\t\t\t\tregulator-max-microvolt = <3300000>;\n" "> +\t\t\t\tregulator-boot-on;\n" "> +\t\t\t\tregulator-always-on;\n" "> +\t\t\t};\n" @@ -112,7 +109,7 @@ "'\\n' here.\n" "\n" "> +\t\trtc {\n" - "> +\t\t\tcompatible =3D \"marvell,88pm80x-rtc\";\n" + "> +\t\t\tcompatible = \"marvell,88pm80x-rtc\";\n" "> +\t\t};\n" "> +\t};\n" "> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c\n" @@ -124,50 +121,49 @@ "> #include <linux/mfd/88pm80x.h>\n" "> #include <linux/slab.h>\n" "> +#include <linux/of_device.h>\n" - "> =20\n" + "> \n" "> /* Interrupt Registers */\n" "> #define PM800_INT_STATUS1\t\t(0x05)\n" - "> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] =\n" - "=3D {\n" + "> @@ -121,6 +122,11 @@ static const struct i2c_device_id pm80x_id_table[] = {\n" "> };\n" "> MODULE_DEVICE_TABLE(i2c, pm80x_id_table);\n" - "> =20\n" - "> +static const struct of_device_id pm80x_of_match_table[] =3D {\n" - "> +\t{ .compatible =3D \"marvell,88pm800\", },\n" + "> \n" + "> +static const struct of_device_id pm80x_of_match_table[] = {\n" + "> +\t{ .compatible = \"marvell,88pm800\", },\n" "> +\t{},\n" "> +};\n" "> +\n" - "> static struct resource rtc_resources[] =3D {\n" + "> static struct resource rtc_resources[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-rtc\",\n" - "> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] =3D {\n" - "> static struct mfd_cell rtc_devs[] =3D {\n" + "> \t .name = \"88pm80x-rtc\",\n" + "> @@ -133,6 +139,7 @@ static struct resource rtc_resources[] = {\n" + "> static struct mfd_cell rtc_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-rtc\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-rtc\",\n" - "> \t .num_resources =3D ARRAY_SIZE(rtc_resources),\n" - "> \t .resources =3D &rtc_resources[0],\n" - "> \t .id =3D -1,\n" - "> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] =3D {\n" - "> static const struct mfd_cell onkey_devs[] =3D {\n" + "> \t .name = \"88pm80x-rtc\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-rtc\",\n" + "> \t .num_resources = ARRAY_SIZE(rtc_resources),\n" + "> \t .resources = &rtc_resources[0],\n" + "> \t .id = -1,\n" + "> @@ -151,6 +158,7 @@ static struct resource onkey_resources[] = {\n" + "> static const struct mfd_cell onkey_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-onkey\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-onkey\",\n" - "> \t .num_resources =3D 1,\n" - "> \t .resources =3D &onkey_resources[0],\n" - "> \t .id =3D -1,\n" - "> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] =3D {\n" - "> static const struct mfd_cell regulator_devs[] =3D {\n" + "> \t .name = \"88pm80x-onkey\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-onkey\",\n" + "> \t .num_resources = 1,\n" + "> \t .resources = &onkey_resources[0],\n" + "> \t .id = -1,\n" + "> @@ -160,6 +168,7 @@ static const struct mfd_cell onkey_devs[] = {\n" + "> static const struct mfd_cell regulator_devs[] = {\n" "> \t{\n" - "> \t .name =3D \"88pm80x-regulator\",\n" - "> +\t .of_compatible =3D \"marvell,88pm80x-regulator\",\n" - "> \t .id =3D -1,\n" + "> \t .name = \"88pm80x-regulator\",\n" + "> +\t .of_compatible = \"marvell,88pm80x-regulator\",\n" + "> \t .id = -1,\n" "> \t},\n" "> };\n" "> @@ -538,14 +547,43 @@ out:\n" "> \treturn ret;\n" "> }\n" - "> =20\n" + "> \n" "> +static int pm800_probe_dt(struct device_node *np,\n" "> +\t\t\t struct device *dev,\n" "\n" @@ -175,7 +171,7 @@ "\n" "> +\t\t\t struct pm80x_platform_data *pdata)\n" "> +{\n" - "> +\tpdata->irq_mode =3D\n" + "> +\tpdata->irq_mode =\n" "> +\t\tof_property_read_bool(np, \"marvell,88pm800-irq-write-clear\");\n" "\n" "You write a new function for this?\n" @@ -190,15 +186,15 @@ "> static int pm800_probe(struct i2c_client *client,\n" "> \t\t\t\t const struct i2c_device_id *id)\n" "> {\n" - "> \tint ret =3D 0;\n" + "> \tint ret = 0;\n" "> \tstruct pm80x_chip *chip;\n" - "> \tstruct pm80x_platform_data *pdata =3D dev_get_platdata(&client->dev);\n" - "> +\tstruct device_node *node =3D client->dev.of_node;\n" + "> \tstruct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);\n" + "> +\tstruct device_node *node = client->dev.of_node;\n" "\n" "It's more common to use 'np'.\n" "\n" "> \tstruct pm80x_subchip *subchip;\n" - "> =20\n" + "> \n" "> +\tif (!pdata && !node) {\n" "> +\t\tdev_err(&client->dev,\n" "> +\t\t\t\"pm80x requires platform data or of_node\\n\");\n" @@ -206,47 +202,34 @@ "> +\t}\n" "> +\n" "> +\tif (!pdata) {\n" - "> +\t\tpdata =3D devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);\n" + "> +\t\tpdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);\n" "> +\t\tif (!pdata) {\n" "> +\t\t\tdev_err(&client->dev, \"failed to allocaate memory\\n\");\n" "> +\t\t\treturn -ENOMEM;\n" "> +\t\t}\n" - "> +\t\tret =3D pm800_probe_dt(node, &client->dev, pdata);\n" + "> +\t\tret = pm800_probe_dt(node, &client->dev, pdata);\n" "> +\t\tif (ret)\n" "> +\t\t\treturn ret;\n" "> +\t}\n" "\n" "All this for a single attribute? Please simplify.\n" "\n" - "> \tret =3D pm80x_init(client);\n" + "> \tret = pm80x_init(client);\n" "> \tif (ret) {\n" "> \t\tdev_err(&client->dev, \"pm800_init fail\\n\");\n" - "> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver =3D {\n" - "> \t\t.name =3D \"88PM800\",\n" - "> \t\t.owner =3D THIS_MODULE,\n" - "> \t\t.pm =3D &pm80x_pm_ops,\n" - "> +\t\t.of_match_table\t=3D pm80x_of_match_table,\n" + "> @@ -611,6 +649,7 @@ static struct i2c_driver pm800_driver = {\n" + "> \t\t.name = \"88PM800\",\n" + "> \t\t.owner = THIS_MODULE,\n" + "> \t\t.pm = &pm80x_pm_ops,\n" + "> +\t\t.of_match_table\t= pm80x_of_match_table,\n" "> \t\t},\n" - "> \t.probe =3D pm800_probe,\n" - "> \t.remove =3D pm800_remove,\n" + "> \t.probe = pm800_probe,\n" + "> \t.remove = pm800_remove,\n" "\n" - "--=20\n" + "-- \n" "Lee Jones\n" "Linaro STMicroelectronics Landing Team Lead\n" - "Linaro.org =E2=94=82 Open source software for ARM SoCs\n" - "Follow Linaro: Facebook | Twitter | Blog\n" - "\n" - "--=20\n" - "--=20\n" - "You received this message because you are subscribed to \"rtc-linux\".\n" - "Membership options at http://groups.google.com/group/rtc-linux .\n" - "Please read http://groups.google.com/group/rtc-linux/web/checklist\n" - "before submitting a driver.\n" - "---=20\n" - "You received this message because you are subscribed to the Google Groups \"=\n" - "rtc-linux\" group.\n" - "To unsubscribe from this group and stop receiving emails from it, send an e=\n" - "mail to rtc-linux+unsubscribe@googlegroups.com.\n" - For more options, visit https://groups.google.com/d/optout. + "Linaro.org \342\224\202 Open source software for ARM SoCs\n" + Follow Linaro: Facebook | Twitter | Blog -07c4bdd80349c8b734eabb244f0e901759ee0fb688c1c82eb1aedc8d730702fd +702f3fdfd0d840e22f45dee3bd0c1d4070db02734c4b3019d7210bba4350aff7
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.