* [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs @ 2013-04-11 16:37 Mark Brown [not found] ` <1365698223-4684-1-git-send-email-broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Mark Brown @ 2013-04-11 16:37 UTC (permalink / raw) To: Samuel Ortiz, Sylwester Nawrocki Cc: Sangbeom Kim, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Kukjin Kim, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Mark Brown We can actually read this back from the device but we use this when registered using standard I2C board data registration so make sure it's there for OF too. Signed-off-by: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> Tested-by: Sylwester Nawrocki <s.nawrocki-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> --- drivers/mfd/wm8994-core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index cdea84e..3f8d591 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c @@ -673,9 +673,9 @@ static void wm8994_device_exit(struct wm8994 *wm8994) } static const struct of_device_id wm8994_of_match[] = { - { .compatible = "wlf,wm1811", }, - { .compatible = "wlf,wm8994", }, - { .compatible = "wlf,wm8958", }, + { .compatible = "wlf,wm1811", .data = (void *)WM1811 }, + { .compatible = "wlf,wm8994", .data = (void *)WM8994 }, + { .compatible = "wlf,wm8958", .data = (void *)WM8958 }, { } }; MODULE_DEVICE_TABLE(of, wm8994_of_match); -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
[parent not found: <1365698223-4684-1-git-send-email-broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>]
* [PATCH 2/2] mfd: wm8994: Add some OF properties [not found] ` <1365698223-4684-1-git-send-email-broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> @ 2013-04-11 16:37 ` Mark Brown 2013-04-11 17:06 ` Sylwester Nawrocki 0 siblings, 1 reply; 8+ messages in thread From: Mark Brown @ 2013-04-11 16:37 UTC (permalink / raw) To: Samuel Ortiz, Sylwester Nawrocki Cc: Sangbeom Kim, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Kukjin Kim, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Mark Brown Add properties for some of the more important bits of platform data and fill out the binding document. Not all of the current platform data is suitable for the sort of fixed configuration that is done using DT, some of it should have runtime mechanisms added instead and some is unlikely to ever be used in practical systems. Signed-off-by: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> --- Documentation/devicetree/bindings/sound/wm8994.txt | 58 ++++++++++++++- drivers/mfd/wm8994-core.c | 75 +++++++++++++++++++- 2 files changed, 130 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/sound/wm8994.txt b/Documentation/devicetree/bindings/sound/wm8994.txt index 7a7eb1e..bb731ab 100644 --- a/Documentation/devicetree/bindings/sound/wm8994.txt +++ b/Documentation/devicetree/bindings/sound/wm8994.txt @@ -5,14 +5,70 @@ on the board). Required properties: - - compatible : "wlf,wm1811", "wlf,wm8994", "wlf,wm8958" + - compatible : One of "wlf,wm1811", "wlf,wm8994" or "wlf,wm8958" - reg : the I2C address of the device for I2C, the chip select number for SPI. + - gpio-controller : Indicates this device is a GPIO controller. + - #gpio-cells : Must be 2. The first cell is the pin number and the + second cell is used to specify optional parameters (currently unused). + + - AVDD2-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply, CPVDD-supply, + SPKVDD1-supply, SPKVDD2-supply : power supplies for the device, as covered + in Documentation/devicetree/bindings/regulator/regulator.txt + +Optional properties: + + - interrupts : The interrupt line the IRQ signal for the device is + connected to. This is optional, if it is not connected then none + of the interrupt related properties should be specified. + - interrupt-controller : These devices contain interrupt controllers + and may provide interrupt services to other devices if they have an + interrupt line connected. + - interrupt-parent : The parent interrupt controller. + - #interrupt-cells: the number of cells to describe an IRQ, this should be 2. + The first cell is the IRQ number. + The second cell is the flags, encoded as the trigger masks from + Documentation/devicetree/bindings/interrupts.txt + + - wlf,gpio-cfg : A list of GPIO configuration register values. If absent, + no configuration of these registers is performed. If any value is + over 0xffff then the register will be left as default. If present 11 + values must be supplied. + + - wlf,micbias-cfg : Two MICBIAS register values for WM1811 or + WM8958. If absent the register defaults will be used. + + - wlf,ldo1ena : GPIO specifier for control of LDO1ENA input to device. + - wlf,ldo2ena : GPIO specifier for control of LDO2ENA input to device. + + - wlf,lineout1-se : If present LINEOUT1 is in single ended mode. + - wlf,lineout2-se : If present LINEOUT2 is in single ended mode. + + - wlf,lineout1-feedback : If present LINEOUT1 has common mode feedback + connected. + - wlf,lineout2-feedback : If present LINEOUT2 has common mode feedback + connected. + + - wlf,ldoena-always-driven : If present LDOENA is always driven + Example: codec: wm8994@1a { compatible = "wlf,wm8994"; reg = <0x1a>; + + gpio-controller; + #gpio-cells = <2>; + + lineout1-se; + + AVDD2-supply = <®ulator>; + CPVDD-supply = <®ulator>; + DBVDD1-supply = <®ulator>; + DBVDD2-supply = <®ulator>; + DBVDD3-supply = <®ulator>; + SPKVDD1-supply = <®ulator>; + SPKVDD2-supply = <®ulator>; }; diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index 3f8d591..75b8b92 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c @@ -19,6 +19,9 @@ #include <linux/err.h> #include <linux/delay.h> #include <linux/mfd/core.h> +#include <linux/of.h> +#include <linux/of_device.h> +#include <linux/of_gpio.h> #include <linux/pm_runtime.h> #include <linux/regmap.h> #include <linux/regulator/consumer.h> @@ -396,6 +399,62 @@ static const struct reg_default wm1811_reva_patch[] = { { 0x102, 0x0 }, }; +#ifdef CONFIG_OF +static int wm8994_set_pdata_from_of(struct wm8994 *wm8994) +{ + struct device_node *np = wm8994->dev->of_node; + struct wm8994_pdata *pdata = &wm8994->pdata; + int i; + + if (!np) + return 0; + + if (of_property_read_u32_array(np, "wlf,gpio-cfg", pdata->gpio_defaults, + ARRAY_SIZE(pdata->gpio_defaults)) >= 0) { + for (i = 0; i < ARRAY_SIZE(pdata->gpio_defaults); i++) { + if (wm8994->pdata.gpio_defaults[i] == 0) + pdata->gpio_defaults[i] + = WM8994_CONFIGURE_GPIO; + else + pdata->gpio_defaults[i] = 0; + } + } + + of_property_read_u32_array(np, "wlf,micbias-cfg", pdata->micbias, + ARRAY_SIZE(pdata->micbias)); + + pdata->lineout1_diff = true; + pdata->lineout2_diff = true; + if (of_find_property(np, "wlf,lineout1-se", NULL)) + pdata->lineout1_diff = false; + if (of_find_property(np, "wlf,lineout2-se", NULL)) + pdata->lineout2_diff = false; + + if (of_find_property(np, "wlf,lineout1-feedback", NULL)) + pdata->lineout1fb = true; + if (of_find_property(np, "wlf,lineout2-feedback", NULL)) + pdata->lineout2fb = true; + + if (of_find_property(np, "wlf,ldoena-always-driven", NULL)) + pdata->lineout2fb = true; + + pdata->ldo[0].enable = of_get_named_gpio(np, "wlf,ldo1ena", 0); + if (pdata->ldo[0].enable < 0) + pdata->ldo[0].enable = 0; + + pdata->ldo[1].enable = of_get_named_gpio(np, "wlf,ldo2ena", 0); + if (pdata->ldo[1].enable < 0) + pdata->ldo[1].enable = 0; + + return 0; +} +#else +static int wm8994_set_pdata_from_of(struct wm8994 *wm8994) +{ + return 0; +} +#endif + /* * Instantiate the generic non-control parts of the device. */ @@ -414,6 +473,10 @@ static int wm8994_device_init(struct wm8994 *wm8994, int irq) } pdata = &wm8994->pdata; + ret = wm8994_set_pdata_from_of(wm8994); + if (ret != 0) + return ret; + dev_set_drvdata(wm8994->dev, wm8994); /* Add the on-chip regulators first for bootstrapping */ @@ -683,6 +746,7 @@ MODULE_DEVICE_TABLE(of, wm8994_of_match); static int wm8994_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { + const struct of_device_id *of_id; struct wm8994 *wm8994; int ret; @@ -693,7 +757,14 @@ static int wm8994_i2c_probe(struct i2c_client *i2c, i2c_set_clientdata(i2c, wm8994); wm8994->dev = &i2c->dev; wm8994->irq = i2c->irq; - wm8994->type = id->driver_data; + + if (i2c->dev.of_node) { + of_id = of_match_device(wm8994_of_match, &i2c->dev); + if (of_id) + wm8994->type = (int)of_id->data; + } else { + wm8994->type = id->driver_data; + } wm8994->regmap = devm_regmap_init_i2c(i2c, &wm8994_base_regmap_config); if (IS_ERR(wm8994->regmap)) { @@ -733,7 +804,7 @@ static struct i2c_driver wm8994_i2c_driver = { .name = "wm8994", .owner = THIS_MODULE, .pm = &wm8994_pm_ops, - .of_match_table = wm8994_of_match, + .of_match_table = of_match_ptr(wm8994_of_match), }, .probe = wm8994_i2c_probe, .remove = wm8994_i2c_remove, -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] mfd: wm8994: Add some OF properties 2013-04-11 16:37 ` [PATCH 2/2] mfd: wm8994: Add some OF properties Mark Brown @ 2013-04-11 17:06 ` Sylwester Nawrocki 2013-04-11 17:11 ` Mark Brown 0 siblings, 1 reply; 8+ messages in thread From: Sylwester Nawrocki @ 2013-04-11 17:06 UTC (permalink / raw) To: Mark Brown Cc: Samuel Ortiz, linux-kernel, devicetree-discuss, Kukjin Kim, Sangbeom Kim On 04/11/2013 06:37 PM, Mark Brown wrote: > Add properties for some of the more important bits of platform data and > fill out the binding document. > > Not all of the current platform data is suitable for the sort of fixed > configuration that is done using DT, some of it should have runtime > mechanisms added instead and some is unlikely to ever be used in practical > systems. > > Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Couple cosmetics remarks below, just in case you happen to resend the patch for some other reason. > --- > Documentation/devicetree/bindings/sound/wm8994.txt | 58 ++++++++++++++- > drivers/mfd/wm8994-core.c | 75 +++++++++++++++++++- > 2 files changed, 130 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/sound/wm8994.txt b/Documentation/devicetree/bindings/sound/wm8994.txt > index 7a7eb1e..bb731ab 100644 > --- a/Documentation/devicetree/bindings/sound/wm8994.txt > +++ b/Documentation/devicetree/bindings/sound/wm8994.txt > @@ -5,14 +5,70 @@ on the board). > > Required properties: > > - - compatible : "wlf,wm1811", "wlf,wm8994", "wlf,wm8958" > + - compatible : One of "wlf,wm1811", "wlf,wm8994" or "wlf,wm8958" Missing dot. > +Optional properties: > + > + - wlf,ldoena-always-driven : If present LDOENA is always driven Ditto. > Example: > > codec: wm8994@1a { > compatible = "wlf,wm8994"; > reg = <0x1a>; > + > + gpio-controller; > + #gpio-cells = <2>; > + > + lineout1-se; ^^^^^^^^^^^^^ Could be tab instead of spaces. > +#ifdef CONFIG_OF > +static int wm8994_set_pdata_from_of(struct wm8994 *wm8994) > +{ > + struct device_node *np = wm8994->dev->of_node; > + struct wm8994_pdata *pdata = &wm8994->pdata; > + int i; > + > + if (!np) > + return 0; > + > + if (of_property_read_u32_array(np, "wlf,gpio-cfg", pdata->gpio_defaults, > + ARRAY_SIZE(pdata->gpio_defaults)) >= 0) { > + for (i = 0; i < ARRAY_SIZE(pdata->gpio_defaults); i++) { > + if (wm8994->pdata.gpio_defaults[i] == 0) Could be simplified to: if (pdata->gpio_defaults[i] == 0) Thanks for the updated series. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] mfd: wm8994: Add some OF properties 2013-04-11 17:06 ` Sylwester Nawrocki @ 2013-04-11 17:11 ` Mark Brown 0 siblings, 0 replies; 8+ messages in thread From: Mark Brown @ 2013-04-11 17:11 UTC (permalink / raw) To: Sylwester Nawrocki Cc: Samuel Ortiz, linux-kernel, devicetree-discuss, Kukjin Kim, Sangbeom Kim [-- Attachment #1: Type: text/plain, Size: 228 bytes --] On Thu, Apr 11, 2013 at 07:06:53PM +0200, Sylwester Nawrocki wrote: > Couple cosmetics remarks below, just in case you happen to resend the patch > for some other reason. Thanks, I've rolled those in and will resend just now. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs @ 2013-04-11 17:11 Mark Brown 2013-04-18 22:36 ` Samuel Ortiz 0 siblings, 1 reply; 8+ messages in thread From: Mark Brown @ 2013-04-11 17:11 UTC (permalink / raw) To: Samuel Ortiz, Sylwester Nawrocki Cc: Sangbeom Kim, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Kukjin Kim, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Mark Brown We can actually read this back from the device but we use this when registered using standard I2C board data registration so make sure it's there for OF too. Signed-off-by: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> Tested-by: Sylwester Nawrocki <s.nawrocki-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> --- drivers/mfd/wm8994-core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index cdea84e..3f8d591 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c @@ -673,9 +673,9 @@ static void wm8994_device_exit(struct wm8994 *wm8994) } static const struct of_device_id wm8994_of_match[] = { - { .compatible = "wlf,wm1811", }, - { .compatible = "wlf,wm8994", }, - { .compatible = "wlf,wm8958", }, + { .compatible = "wlf,wm1811", .data = (void *)WM1811 }, + { .compatible = "wlf,wm8994", .data = (void *)WM8994 }, + { .compatible = "wlf,wm8958", .data = (void *)WM8958 }, { } }; MODULE_DEVICE_TABLE(of, wm8994_of_match); -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs 2013-04-11 17:11 [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs Mark Brown @ 2013-04-18 22:36 ` Samuel Ortiz 0 siblings, 0 replies; 8+ messages in thread From: Samuel Ortiz @ 2013-04-18 22:36 UTC (permalink / raw) To: Mark Brown Cc: Sylwester Nawrocki, linux-kernel, devicetree-discuss, Kukjin Kim, Sangbeom Kim Hi Mark, On Thu, Apr 11, 2013 at 06:11:50PM +0100, Mark Brown wrote: > We can actually read this back from the device but we use this when > registered using standard I2C board data registration so make sure > it's there for OF too. > > Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> > Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com> > --- > drivers/mfd/wm8994-core.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) Both patches applied, thanks. Cheers, Samuel. -- Intel Open Source Technology Centre http://oss.intel.com/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs @ 2013-04-10 14:39 Mark Brown 2013-04-11 9:53 ` Sylwester Nawrocki 0 siblings, 1 reply; 8+ messages in thread From: Mark Brown @ 2013-04-10 14:39 UTC (permalink / raw) To: Samuel Ortiz Cc: Kukjin Kim, Sangbeom Kim, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ, Mark Brown, linux-kernel-u79uwXL29TY76Z2rM5mHXA, patches-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E We can actually read this back from the device but we use this when registered using standard I2C board data registration so make sure it's there for OF too. Signed-off-by: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> --- Untested at present. drivers/mfd/wm8994-core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index cdea84e..3f8d591 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c @@ -673,9 +673,9 @@ static void wm8994_device_exit(struct wm8994 *wm8994) } static const struct of_device_id wm8994_of_match[] = { - { .compatible = "wlf,wm1811", }, - { .compatible = "wlf,wm8994", }, - { .compatible = "wlf,wm8958", }, + { .compatible = "wlf,wm1811", .data = (void *)WM1811 }, + { .compatible = "wlf,wm8994", .data = (void *)WM8994 }, + { .compatible = "wlf,wm8958", .data = (void *)WM8958 }, { } }; MODULE_DEVICE_TABLE(of, wm8994_of_match); -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs 2013-04-10 14:39 Mark Brown @ 2013-04-11 9:53 ` Sylwester Nawrocki 0 siblings, 0 replies; 8+ messages in thread From: Sylwester Nawrocki @ 2013-04-11 9:53 UTC (permalink / raw) To: Mark Brown Cc: Samuel Ortiz, Kukjin Kim, Sangbeom Kim, devicetree-discuss, linux-kernel, patches On 04/10/2013 04:39 PM, Mark Brown wrote: > We can actually read this back from the device but we use this when > registered using standard I2C board data registration so make sure > it's there for OF too. > > Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> > --- > > Untested at present. I have tested this with wm1811 codec, together with the second patch. The device type was set correctly. FWIW, Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com> > drivers/mfd/wm8994-core.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c > index cdea84e..3f8d591 100644 > --- a/drivers/mfd/wm8994-core.c > +++ b/drivers/mfd/wm8994-core.c > @@ -673,9 +673,9 @@ static void wm8994_device_exit(struct wm8994 *wm8994) > } > > static const struct of_device_id wm8994_of_match[] = { > - { .compatible = "wlf,wm1811", }, > - { .compatible = "wlf,wm8994", }, > - { .compatible = "wlf,wm8958", }, > + { .compatible = "wlf,wm1811", .data = (void *)WM1811 }, > + { .compatible = "wlf,wm8994", .data = (void *)WM8994 }, > + { .compatible = "wlf,wm8958", .data = (void *)WM8958 }, > { } > }; > MODULE_DEVICE_TABLE(of, wm8994_of_match); Thanks, Sylwester ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-04-18 22:36 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-04-11 16:37 [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs Mark Brown [not found] ` <1365698223-4684-1-git-send-email-broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org> 2013-04-11 16:37 ` [PATCH 2/2] mfd: wm8994: Add some OF properties Mark Brown 2013-04-11 17:06 ` Sylwester Nawrocki 2013-04-11 17:11 ` Mark Brown -- strict thread matches above, loose matches on Subject: below -- 2013-04-11 17:11 [PATCH 1/2] mfd: wm8994: Add device ID data to WM8994 OF device IDs Mark Brown 2013-04-18 22:36 ` Samuel Ortiz 2013-04-10 14:39 Mark Brown 2013-04-11 9:53 ` Sylwester Nawrocki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).