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
>
next prev parent 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).