Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1946366Ab2ERXbZ (ORCPT ); Fri, 18 May 2012 19:31:25 -0400 Received: from mail-pz0-f46.google.com ([209.85.210.46]:37906 "EHLO mail-pz0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1946292Ab2ERXbP (ORCPT ); Fri, 18 May 2012 19:31:15 -0400 From: Grant Likely Subject: Re: [PATCH 3/3] gpio: tps65910: dt: process gpio specific device node info To: Laxman Dewangan , linus.walleij@stericsson.com, sameo@linux.intel.com, broonie@opensource.wolfsonmicro.com, lrg@slimlogic.co.uk Cc: linux-kernel@vger.kernel.org, Laxman Dewangan In-Reply-To: <1337373103-23933-4-git-send-email-ldewangan@nvidia.com> References: <1337373103-23933-1-git-send-email-ldewangan@nvidia.com> <1337373103-23933-4-git-send-email-ldewangan@nvidia.com> Date: Fri, 18 May 2012 17:31:13 -0600 Message-Id: <20120518233113.7164E3E07C8@localhost> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2724 Lines: 88 On Sat, 19 May 2012 02:01:43 +0530, Laxman Dewangan wrote: > Parse the gpio specific device node information locally. > > Signed-off-by: Laxman Dewangan Acked-by: Grant Likely I expect this needs to go in via Samuel's tree with the mfd patches? g. > --- > drivers/gpio/gpio-tps65910.c | 36 ++++++++++++++++++++++++++++++++++++ > 1 files changed, 36 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpio/gpio-tps65910.c b/drivers/gpio/gpio-tps65910.c > index af6dc83..c1ad288 100644 > --- a/drivers/gpio/gpio-tps65910.c > +++ b/drivers/gpio/gpio-tps65910.c > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > > struct tps65910_gpio { > struct gpio_chip gpio_chip; > @@ -81,6 +82,37 @@ static int tps65910_gpio_input(struct gpio_chip *gc, unsigned offset) > GPIO_CFG_MASK); > } > > +#ifdef CONFIG_OF > +static struct tps65910_board *tps65910_parse_dt_for_gpio(struct device *dev, > + struct tps65910 *tps65910, int chip_ngpio) > +{ > + struct tps65910_board *tps65910_board = tps65910->of_plat_data; > + unsigned int prop_array[TPS6591X_MAX_NUM_GPIO]; > + int ngpio = min(chip_ngpio, TPS6591X_MAX_NUM_GPIO); > + int ret; > + int idx; > + > + tps65910_board->gpio_base = -1; > + ret = of_property_read_u32_array(tps65910->dev->of_node, > + "ti,en-gpio-sleep", prop_array, ngpio); > + if (ret < 0) { > + dev_dbg(dev, "ti,en-gpio-sleep not specified\n"); > + return tps65910_board; > + } > + > + for (idx = 0; idx < ngpio; idx++) > + tps65910_board->en_gpio_sleep[idx] = (prop_array[idx] != 0); > + > + return tps65910_board; > +} > +#else > +static struct tps65910_board *tps65910_parse_dt_for_gpio(struct device *dev, > + struct tps65910 *tps65910, int chip_ngpio) > +{ > + return NULL; > +} > +#endif > + > static int __devinit tps65910_gpio_probe(struct platform_device *pdev) > { > struct tps65910 *tps65910 = dev_get_drvdata(pdev->dev.parent); > @@ -122,6 +154,10 @@ static int __devinit tps65910_gpio_probe(struct platform_device *pdev) > else > tps65910_gpio->gpio_chip.base = -1; > > + if (!pdata && tps65910->dev->of_node) > + pdata = tps65910_parse_dt_for_gpio(&pdev->dev, tps65910, > + tps65910_gpio->gpio_chip.ngpio); > + > if (!pdata) > goto skip_init; > > -- > 1.7.1.1 > -- Grant Likely, B.Sc, P.Eng. Secret Lab Technologies, Ltd. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/