diff mbox

[2/2,v2] ARM: shmobile: Lager:add SPI FLASH support on QSPI

Message ID 1382074384-24975-3-git-send-email-cm-hiep@jinso.co.jp (mailing list archive)
State Superseded
Headers show

Commit Message

Cao Minh Hiep Oct. 18, 2013, 5:33 a.m. UTC
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(+)

Comments

Sergei Shtylyov Oct. 18, 2013, 11:54 a.m. UTC | #1
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
Cao Minh Hiep Oct. 21, 2013, 1:29 a.m. UTC | #2
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 mbox

Patch

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)
 					  &ether_pdata, sizeof(ether_pdata));
 
 	lager_add_du_device();
+
+	r8a7790_add_qspi_device(&qspi_pdata);
+	spi_register_board_info(spi_info, ARRAY_SIZE(spi_info));
 }
 
 /*