Message ID | 1382074384-24975-3-git-send-email-cm-hiep@jinso.co.jp (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Hello. On 18-10-2013 9:33, Cao Minh Hiep wrote: > From: Hiep Cao Minh <cm-hiep@jinso.co.jp> > This patch enables Spansion S25FL512SAGMFIG11 chip on QSPI, > Add support for the QSPI interface on Lager. > Signed-off-by: Hiep Cao Minh <cm-hiep@jinso.co.jp> > --- > arch/arm/mach-shmobile/board-lager.c | 69 ++++++++++++++++++++++++++++++++++ > 1 file changed, 69 insertions(+) > diff --git a/arch/arm/mach-shmobile/board-lager.c b/arch/arm/mach-shmobile/board-lager.c > index 78a31b6..5d69cde 100644 > --- a/arch/arm/mach-shmobile/board-lager.c > +++ b/arch/arm/mach-shmobile/board-lager.c [...] > @@ -165,6 +170,67 @@ static const struct resource ether_resources[] __initconst = { [...] > +void __init r8a7790_add_qspi_device(struct rspi_plat_data *pdata) You apparently forgot to change the name prefix to 'lager_'. Also, there's no dire need in this function, you can register the QSPI device right in lager_add_standard_devices(). > +{ > + platform_device_register_resndata( You're breaking the line to early, I think. > + &platform_bus, "qspi", 0, > + qspi_resources, ARRAY_SIZE(qspi_resources), > + pdata, sizeof(*pdata)); > +} > + > static const struct pinctrl_map lager_pinctrl_map[] = { > /* DU (CN10: ARGB0, CN13: LVDS) */ > PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790", WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello Sergei Thanks for your comment. >> +void __init r8a7790_add_qspi_device(struct rspi_plat_data *pdata) > > You apparently forgot to change the name prefix to 'lager_'. Also, > there's no dire need in this function, you can register the QSPI > device right in lager_add_standard_devices(). > >> +{ >> + platform_device_register_resndata( > > You're breaking the line to early, I think. > >> + &platform_bus, "qspi", 0, >> + qspi_resources, ARRAY_SIZE(qspi_resources), >> + pdata, sizeof(*pdata)); >> +} >> + >> static const struct pinctrl_map lager_pinctrl_map[] = { >> /* DU (CN10: ARGB0, CN13: LVDS) */ >> PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790", > I'll update this patch as you pointed out to me! Best Regards, Hiep. -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-shmobile/board-lager.c b/arch/arm/mach-shmobile/board-lager.c index 78a31b6..5d69cde 100644 --- a/arch/arm/mach-shmobile/board-lager.c +++ b/arch/arm/mach-shmobile/board-lager.c @@ -39,6 +39,11 @@ #include <mach/r8a7790.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/mtd.h> +#include <linux/spi/flash.h> +#include <linux/spi/rspi.h> +#include <linux/spi/spi.h> /* DU */ static struct rcar_du_encoder_data lager_du_encoders[] = { @@ -165,6 +170,67 @@ static const struct resource ether_resources[] __initconst = { DEFINE_RES_IRQ(gic_spi(162)), }; +/* SPI Flash memory (Spansion S25FL512SAGMFIG11 64Mb) */ +static struct mtd_partition spi_flash_part[] = { + /* Reserved for user loader program, read-only */ + { + .name = "loader", + .offset = 0, + .size = SZ_256K, + .mask_flags = MTD_WRITEABLE, + }, + /* Reserved for user program, read-only */ + { + .name = "user", + .offset = MTDPART_OFS_APPEND, + .size = SZ_4M, + .mask_flags = MTD_WRITEABLE, + }, + /* All else is writable (e.g. JFFS2) */ + { + .name = "flash", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + .mask_flags = 0, + }, +}; + +static struct flash_platform_data spi_flash_data = { + .name = "m25p80", + .parts = spi_flash_part, + .nr_parts = ARRAY_SIZE(spi_flash_part), + .type = "s25fl512s", +}; + +static struct rspi_plat_data qspi_pdata = { + .num_chipselect = 1, +}; + +static struct spi_board_info spi_info[] __initdata = { + { + .modalias = "m25p80", + .platform_data = &spi_flash_data, + .mode = SPI_MODE_0, + .max_speed_hz = 30000000, + .bus_num = 0, + .chip_select = 0, + }, +}; + +/* QSPI resource */ +static struct resource qspi_resources[] __initdata = { + DEFINE_RES_MEM(0xe6b10000, 0x1000), + DEFINE_RES_IRQ(gic_spi(184)), +}; + +void __init r8a7790_add_qspi_device(struct rspi_plat_data *pdata) +{ + platform_device_register_resndata( + &platform_bus, "qspi", 0, + qspi_resources, ARRAY_SIZE(qspi_resources), + pdata, sizeof(*pdata)); +} + static const struct pinctrl_map lager_pinctrl_map[] = { /* DU (CN10: ARGB0, CN13: LVDS) */ PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790", @@ -222,6 +288,9 @@ static void __init lager_add_standard_devices(void) ðer_pdata, sizeof(ether_pdata)); lager_add_du_device(); + + r8a7790_add_qspi_device(&qspi_pdata); + spi_register_board_info(spi_info, ARRAY_SIZE(spi_info)); } /*