From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755394AbcEYP0p (ORCPT ); Wed, 25 May 2016 11:26:45 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:48730 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752694AbcEYP0n (ORCPT ); Wed, 25 May 2016 11:26:43 -0400 Subject: Re: [PATCH v2] mfd: stmpe: move platform data into mfd driver To: Linus Walleij , Samuel Ortiz , Lee Jones , References: <1464178922-29927-1-git-send-email-linus.walleij@linaro.org> From: Patrice Chotard Message-ID: <5745C42B.1000805@st.com> Date: Wed, 25 May 2016 17:26:35 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: <1464178922-29927-1-git-send-email-linus.walleij@linaro.org> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.48.1.66] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-05-25_09:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/25/2016 02:22 PM, Linus Walleij wrote: > The STMPE platform data is only populated from the device tree > in all existing users, so push the struct and make the OF case > the norm. > > Cc: Patrice Chotard > Signed-off-by: Linus Walleij > --- > ChangeLog v1->v2: > - Drop check for (!np) NULL device node: as Lee notices, this > can no longer happen on a pure DT driver. > --- > drivers/mfd/stmpe.c | 40 ++++++++++++++++++++++++++++------------ > include/linux/mfd/stmpe.h | 22 +--------------------- > 2 files changed, 29 insertions(+), 33 deletions(-) > > diff --git a/drivers/mfd/stmpe.c b/drivers/mfd/stmpe.c > index fb8f9e8b75df..94c7cc02fdab 100644 > --- a/drivers/mfd/stmpe.c > +++ b/drivers/mfd/stmpe.c > @@ -23,6 +23,27 @@ > #include > #include "stmpe.h" > > +/** > + * struct stmpe_platform_data - STMPE platform data > + * @id: device id to distinguish between multiple STMPEs on the same board > + * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*) > + * @irq_trigger: IRQ trigger to use for the interrupt to the host > + * @autosleep: bool to enable/disable stmpe autosleep > + * @autosleep_timeout: inactivity timeout in milliseconds for autosleep > + * @irq_over_gpio: true if gpio is used to get irq > + * @irq_gpio: gpio number over which irq will be requested (significant only if > + * irq_over_gpio is true) > + */ > +struct stmpe_platform_data { > + int id; > + unsigned int blocks; > + unsigned int irq_trigger; > + bool autosleep; > + bool irq_over_gpio; > + int irq_gpio; > + int autosleep_timeout; > +}; > + > static int __stmpe_enable(struct stmpe *stmpe, unsigned int blocks) > { > return stmpe->variant->enable(stmpe, blocks, true); > @@ -1187,24 +1208,19 @@ static void stmpe_of_probe(struct stmpe_platform_data *pdata, > /* Called from client specific probe routines */ > int stmpe_probe(struct stmpe_client_info *ci, enum stmpe_partnum partnum) > { > - struct stmpe_platform_data *pdata = dev_get_platdata(ci->dev); > + struct stmpe_platform_data *pdata; > struct device_node *np = ci->dev->of_node; > struct stmpe *stmpe; > int ret; > > - if (!pdata) { > - if (!np) > - return -EINVAL; > - > - pdata = devm_kzalloc(ci->dev, sizeof(*pdata), GFP_KERNEL); > - if (!pdata) > - return -ENOMEM; > + pdata = devm_kzalloc(ci->dev, sizeof(*pdata), GFP_KERNEL); > + if (!pdata) > + return -ENOMEM; > > - stmpe_of_probe(pdata, np); > + stmpe_of_probe(pdata, np); > > - if (of_find_property(np, "interrupts", NULL) == NULL) > - ci->irq = -1; > - } > + if (of_find_property(np, "interrupts", NULL) == NULL) > + ci->irq = -1; > > stmpe = devm_kzalloc(ci->dev, sizeof(struct stmpe), GFP_KERNEL); > if (!stmpe) > diff --git a/include/linux/mfd/stmpe.h b/include/linux/mfd/stmpe.h > index cb83883918a7..de748bc7525e 100644 > --- a/include/linux/mfd/stmpe.h > +++ b/include/linux/mfd/stmpe.h > @@ -62,6 +62,7 @@ enum { > > struct stmpe_variant_info; > struct stmpe_client_info; > +struct stmpe_platform_data; > > /** > * struct stmpe - STMPE MFD structure > @@ -117,25 +118,4 @@ extern int stmpe_disable(struct stmpe *stmpe, unsigned int blocks); > > #define STMPE_GPIO_NOREQ_811_TOUCH (0xf0) > > -/** > - * struct stmpe_platform_data - STMPE platform data > - * @id: device id to distinguish between multiple STMPEs on the same board > - * @blocks: bitmask of blocks to enable (use STMPE_BLOCK_*) > - * @irq_trigger: IRQ trigger to use for the interrupt to the host > - * @autosleep: bool to enable/disable stmpe autosleep > - * @autosleep_timeout: inactivity timeout in milliseconds for autosleep > - * @irq_over_gpio: true if gpio is used to get irq > - * @irq_gpio: gpio number over which irq will be requested (significant only if > - * irq_over_gpio is true) > - */ > -struct stmpe_platform_data { > - int id; > - unsigned int blocks; > - unsigned int irq_trigger; > - bool autosleep; > - bool irq_over_gpio; > - int irq_gpio; > - int autosleep_timeout; > -}; > - > #endif Acked-by: Patrice Chotard Thanks Patrice