linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: b32955@freescale.com (Huang Shijie)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] ARM: mxs: add GPMI device for imx23/imx28
Date: Fri, 15 Apr 2011 16:33:35 +0800	[thread overview]
Message-ID: <4DA802DF.3070108@freescale.com> (raw)
In-Reply-To: <20110415081223.GM31990@pengutronix.de>

hi:
> On Fri, Apr 15, 2011 at 04:01:48PM +0800, Huang Shijie wrote:
>> add the gpmi device for imx23 and imx28.
>>
>> Signed-off-by: Huang Shijie<b32955@freescale.com>
>> ---
>>   arch/arm/mach-mxs/clock-mx23.c                  |    1 +
>>   arch/arm/mach-mxs/clock-mx28.c                  |    1 +
>>   arch/arm/mach-mxs/devices-mx23.h                |    4 +
>>   arch/arm/mach-mxs/devices-mx28.h                |    4 +
>>   arch/arm/mach-mxs/devices/Kconfig               |    3 +
>>   arch/arm/mach-mxs/devices/Makefile              |    1 +
>>   arch/arm/mach-mxs/devices/platform-gpmi.c       |   82 +++++++++++++++++++++++
>>   arch/arm/mach-mxs/include/mach/devices-common.h |    6 ++
>>   arch/arm/mach-mxs/mach-mx23evk.c                |   28 ++++++++
>>   arch/arm/mach-mxs/mach-mx28evk.c                |   28 ++++++++
> Can you please split out the changes to arch/arm/mach-mxs/mach-* into
> one or two seperate changes?
>
ok, thanks.
>>   10 files changed, 158 insertions(+), 0 deletions(-)
>>   create mode 100644 arch/arm/mach-mxs/devices/platform-gpmi.c
>>
>> diff --git a/arch/arm/mach-mxs/clock-mx23.c b/arch/arm/mach-mxs/clock-mx23.c
>> index d133c7f..81d54bf 100644
>> --- a/arch/arm/mach-mxs/clock-mx23.c
>> +++ b/arch/arm/mach-mxs/clock-mx23.c
>> @@ -454,6 +454,7 @@ static struct clk_lookup lookups[] = {
>>   	_REGISTER_CLOCK("mxs-pwm.3", NULL, pwm_clk)
>>   	_REGISTER_CLOCK("mxs-pwm.4", NULL, pwm_clk)
>>   	_REGISTER_CLOCK("imx23-fb", NULL, lcdif_clk)
>> +	_REGISTER_CLOCK("imx23-gpmi-nfc", NULL, gpmi_clk)
>>   };
>>
>>   static int clk_misc_init(void)
>> diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c
>> index 5e489a2..9dbd2d5 100644
>> --- a/arch/arm/mach-mxs/clock-mx28.c
>> +++ b/arch/arm/mach-mxs/clock-mx28.c
>> @@ -609,6 +609,7 @@ static struct clk_lookup lookups[] = {
>>   	_REGISTER_CLOCK("duart", NULL, uart_clk)
>>   	_REGISTER_CLOCK("imx28-fec.0", NULL, fec_clk)
>>   	_REGISTER_CLOCK("imx28-fec.1", NULL, fec_clk)
>> +	_REGISTER_CLOCK("imx28-gpmi-nfc", NULL, gpmi_clk)
>>   	_REGISTER_CLOCK("mxs-auart.0", NULL, uart_clk)
>>   	_REGISTER_CLOCK("mxs-auart.1", NULL, uart_clk)
>>   	_REGISTER_CLOCK("mxs-auart.2", NULL, uart_clk)
>> diff --git a/arch/arm/mach-mxs/devices-mx23.h b/arch/arm/mach-mxs/devices-mx23.h
>> index c7e14f4..03bd234 100644
>> --- a/arch/arm/mach-mxs/devices-mx23.h
>> +++ b/arch/arm/mach-mxs/devices-mx23.h
>> @@ -21,6 +21,10 @@ extern const struct mxs_auart_data mx23_auart_data[] __initconst;
>>   #define mx23_add_auart0()		mx23_add_auart(0)
>>   #define mx23_add_auart1()		mx23_add_auart(1)
>>
>> +extern const struct resource res_imx23[RES_SIZE] __initconst;
> This doesn't have a namespace, but see below.
>
>> +#define mx23_add_gpmi(pdata)	\
>> +	mxs_add_gpmi(pdata, res_imx23, RES_SIZE, GPMI_NFC_DRIVER_MX23)
> The less arguments mxs_add_gpmi takes the easier it's to call it. (I.e.
> the machine code to set the arguments and call the function is shorter
> when there are only two arguments to pass.) See platform-spi_imx.c for
> an example to pass a device id.
>
Ok. I will reduce the parameters to two.
>> +
>>   #define mx23_add_mxs_pwm(id)		mxs_add_mxs_pwm(MX23_PWM_BASE_ADDR, id)
>>
>>   struct platform_device *__init mx23_add_mxsfb(
>> diff --git a/arch/arm/mach-mxs/devices-mx28.h b/arch/arm/mach-mxs/devices-mx28.h
>> index 9d08555..64458fd 100644
>> --- a/arch/arm/mach-mxs/devices-mx28.h
>> +++ b/arch/arm/mach-mxs/devices-mx28.h
>> @@ -34,6 +34,10 @@ extern const struct mxs_flexcan_data mx28_flexcan_data[] __initconst;
>>   #define mx28_add_flexcan0(pdata)	mx28_add_flexcan(0, pdata)
>>   #define mx28_add_flexcan1(pdata)	mx28_add_flexcan(1, pdata)
>>
>> +extern const struct resource res_imx28[RES_SIZE] __initconst;
>> +#define mx28_add_gpmi(pdata)	\
>> +	mxs_add_gpmi(pdata, res_imx28, RES_SIZE, GPMI_NFC_DRIVER_MX28)
>> +
> ditto
>>   extern const struct mxs_i2c_data mx28_mxs_i2c_data[] __initconst;
>>   #define mx28_add_mxs_i2c(id)		mxs_add_mxs_i2c(&mx28_mxs_i2c_data[id])
>>
>> diff --git a/arch/arm/mach-mxs/devices/Kconfig b/arch/arm/mach-mxs/devices/Kconfig
>> index 1451ad0..e9a9a8b 100644
>> --- a/arch/arm/mach-mxs/devices/Kconfig
>> +++ b/arch/arm/mach-mxs/devices/Kconfig
>> @@ -12,6 +12,9 @@ config MXS_HAVE_PLATFORM_FLEXCAN
>>   	select HAVE_CAN_FLEXCAN if CAN
>>   	bool
>>
>> +config MXS_HAVE_PLATFORM_GPMI
>> +	bool
>> +
>>   config MXS_HAVE_PLATFORM_MXS_I2C
>>   	bool
>>
>> diff --git a/arch/arm/mach-mxs/devices/Makefile b/arch/arm/mach-mxs/devices/Makefile
>> index 0d9bea3..4f2f66c 100644
>> --- a/arch/arm/mach-mxs/devices/Makefile
>> +++ b/arch/arm/mach-mxs/devices/Makefile
>> @@ -3,6 +3,7 @@ obj-$(CONFIG_MXS_HAVE_PLATFORM_AUART) += platform-auart.o
>>   obj-y += platform-dma.o
>>   obj-$(CONFIG_MXS_HAVE_PLATFORM_FEC) += platform-fec.o
>>   obj-$(CONFIG_MXS_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
>> +obj-$(CONFIG_MXS_HAVE_PLATFORM_GPMI) += platform-gpmi.o
>>   obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_I2C) += platform-mxs-i2c.o
>>   obj-$(CONFIG_MXS_HAVE_PLATFORM_MXS_PWM) += platform-mxs-pwm.o
>>   obj-$(CONFIG_MXS_HAVE_PLATFORM_MXSFB) += platform-mxsfb.o
>> diff --git a/arch/arm/mach-mxs/devices/platform-gpmi.c b/arch/arm/mach-mxs/devices/platform-gpmi.c
>> new file mode 100644
>> index 0000000..46f5e52
>> --- /dev/null
>> +++ b/arch/arm/mach-mxs/devices/platform-gpmi.c
>> @@ -0,0 +1,82 @@
>> +/*
>> + * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation; either version 2 of the License, or
>> + * (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License along
>> + * with this program; if not, write to the Free Software Foundation, Inc.,
>> + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>> + */
>> +#include<asm/sizes.h>
>> +#include<mach/mx23.h>
>> +#include<mach/mx28.h>
>> +#include<mach/devices-common.h>
>> +
>> +#define RES_MEM(soc, _id, _s, _n)			\
>> +	{						\
>> +		.start = soc ##_## _id,			\
>> +		.end   = soc ##_## _id + (_s) - 1,	\
>> +		.name  = (_n),				\
>> +		.flags = IORESOURCE_MEM,		\
>> +	}
>> +
>> +#define RES_IRQ(soc, _id, _n)			\
>> +	{					\
>> +		.start = soc ##_## _id,		\
>> +		.end   = soc ##_## _id,		\
>> +		.name  = (_n),			\
>> +		.flags = IORESOURCE_IRQ,	\
>> +	}
>> +
>> +#define RES_DMA(soc, _i_s, _i_e, _n)		\
>> +	{					\
>> +		.start = soc ##_## _i_s,	\
>> +		.end   = soc ##_## _i_e,	\
>> +		.name  = (_n),			\
>> +		.flags = IORESOURCE_DMA,	\
>> +	}
>> +
>> +#ifdef CONFIG_SOC_IMX23
>> +const struct resource res_imx23[RES_SIZE] __initconst = {
>> +	/* GPMI */
>> +	RES_MEM(MX23, GPMI_BASE_ADDR, SZ_8K, GPMI_NFC_GPMI_REGS_ADDR_RES_NAME),
>> +	RES_IRQ(MX23, INT_GPMI_ATTENTION, GPMI_NFC_GPMI_INTERRUPT_RES_NAME),
>> +	/* BCH */
>> +	RES_MEM(MX23, BCH_BASE_ADDR, SZ_8K, GPMI_NFC_BCH_REGS_ADDR_RES_NAME),
>> +	RES_IRQ(MX23, INT_BCH, GPMI_NFC_BCH_INTERRUPT_RES_NAME),
>> +	/* DMA */
>> +	RES_DMA(MX23, DMA_GPMI0, DMA_GPMI3, GPMI_NFC_DMA_CHANNELS_RES_NAME),
>> +	RES_IRQ(MX23, INT_GPMI_DMA, GPMI_NFC_DMA_INTERRUPT_RES_NAME),
>> +};
>> +#endif
>> +
>> +#ifdef CONFIG_SOC_IMX28
>> +const struct resource res_imx28[RES_SIZE] __initconst = {
>> +	/* GPMI */
>> +	RES_MEM(MX28, GPMI_BASE_ADDR, SZ_8K, GPMI_NFC_GPMI_REGS_ADDR_RES_NAME),
>> +	RES_IRQ(MX28, INT_GPMI, GPMI_NFC_GPMI_INTERRUPT_RES_NAME),
>> +	/* BCH */
>> +	RES_MEM(MX28, BCH_BASE_ADDR, SZ_8K, GPMI_NFC_BCH_REGS_ADDR_RES_NAME),
>> +	RES_IRQ(MX28, INT_BCH, GPMI_NFC_BCH_INTERRUPT_RES_NAME),
>> +	/* DMA */
>> +	RES_DMA(MX28, DMA_GPMI0, DMA_GPMI7, GPMI_NFC_DMA_CHANNELS_RES_NAME),
>> +	RES_IRQ(MX28, INT_GPMI_DMA, GPMI_NFC_DMA_INTERRUPT_RES_NAME),
>> +};
>> +#endif
> See how this is done in platform-spi_imx.c.
>
ok, thanks.

Best Regards
Huang Shijie
>> +
>> +struct platform_device *__init
>> +mxs_add_gpmi(const struct gpmi_nfc_platform_data *data,
>> +		const struct resource *res, int res_size, const char *name)
>> +{
>> +	return mxs_add_platform_device_dmamask(name, -1,
>> +				res, res_size,
>> +				data, sizeof(*data), DMA_BIT_MASK(32));
>> +}
> Best regards
> Uwe
>

  reply	other threads:[~2011-04-15  8:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-15  8:01 [PATCH 1/2] ARM: mxs: add GPMI support for imx23/imx28 Huang Shijie
2011-04-15  8:01 ` [PATCH 2/2] ARM: mxs: add GPMI device " Huang Shijie
2011-04-15  8:12   ` Uwe Kleine-König
2011-04-15  8:33     ` Huang Shijie [this message]
2011-04-15  8:06 ` [PATCH 1/2] ARM: mxs: add GPMI support " Uwe Kleine-König
2011-04-15  8:13   ` Huang Shijie
2011-04-15  8:42     ` Uwe Kleine-König
2011-04-15  8:50       ` Huang Shijie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DA802DF.3070108@freescale.com \
    --to=b32955@freescale.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).