atheros[ar2315-spiflash]: pass I/O mem regions via resources

Pass I/O memory regions (flash read and MMR) via platform device
resources array and use them inside spiflash driver.

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>

SVN-Revision: 41320
master
John Crispin 10 years ago
parent 1dab970e8b
commit 08a9fcb0ef
  1. 16
      target/linux/atheros/patches-3.10/100-board.patch
  2. 19
      target/linux/atheros/patches-3.10/120-spiflash.patch

@ -750,7 +750,7 @@
+#define AR2315_ENET0 0x10500000 /* ETHERNET MMR */ +#define AR2315_ENET0 0x10500000 /* ETHERNET MMR */
+#define AR2315_DSLBASE 0x11000000 /* RESET CONTROL MMR */ +#define AR2315_DSLBASE 0x11000000 /* RESET CONTROL MMR */
+#define AR2315_UART0 0x11100003 /* UART MMR */ +#define AR2315_UART0 0x11100003 /* UART MMR */
+#define AR2315_SPI 0x11300000 /* SPI FLASH MMR */ +#define AR2315_SPI_MMR 0x11300000 /* SPI FLASH MMR */
+#define AR2315_PCIEXT 0x80000000 /* pci external */ +#define AR2315_PCIEXT 0x80000000 /* pci external */
+ +
+/* +/*
@ -2521,16 +2521,16 @@
+ +
+static struct resource ar2315_spiflash_res[] = { +static struct resource ar2315_spiflash_res[] = {
+ { + {
+ .name = "flash_base", + .name = "spiflash_read",
+ .flags = IORESOURCE_MEM, + .flags = IORESOURCE_MEM,
+ .start = KSEG1ADDR(AR2315_SPI_READ), + .start = AR2315_SPI_READ,
+ .end = KSEG1ADDR(AR2315_SPI_READ) + 0x1000000 - 1, + .end = AR2315_SPI_READ + 0x1000000 - 1,
+ }, + },
+ { + {
+ .name = "flash_regs", + .name = "spiflash_mmr",
+ .flags = IORESOURCE_MEM, + .flags = IORESOURCE_MEM,
+ .start = 0x11300000, + .start = AR2315_SPI_MMR,
+ .end = 0x11300012, + .end = AR2315_SPI_MMR + 12 - 1,
+ }, + },
+}; +};
+ +
@ -2553,7 +2553,7 @@
+ */ + */
+static u8 __init *ar2315_flash_limit(void) +static u8 __init *ar2315_flash_limit(void)
+{ +{
+ return (u8 *)ar2315_spiflash_res[0].end + 1; + return (u8 *)KSEG1ADDR(ar2315_spiflash_res[0].end + 1);
+} +}
+ +
+#ifdef CONFIG_LEDS_GPIO +#ifdef CONFIG_LEDS_GPIO

@ -23,7 +23,7 @@
--- /dev/null --- /dev/null
+++ b/drivers/mtd/devices/ar2315.c +++ b/drivers/mtd/devices/ar2315.c
@@ -0,0 +1,527 @@ @@ -0,0 +1,540 @@
+ +
+/* +/*
+ * MTD driver for the SPI Flash Memory support on Atheros AR2315 + * MTD driver for the SPI Flash Memory support on Atheros AR2315
@ -452,6 +452,7 @@
+{ +{
+ struct spiflash_priv *priv; + struct spiflash_priv *priv;
+ struct mtd_info *mtd; + struct mtd_info *mtd;
+ struct resource *res;
+ int index; + int index;
+ int result = 0; + int result = 0;
+ +
@ -461,7 +462,13 @@
+ priv->state = FL_READY; + priv->state = FL_READY;
+ mtd = &priv->mtd; + mtd = &priv->mtd;
+ +
+ priv->mmraddr = ioremap_nocache(SPI_FLASH_MMR, SPI_FLASH_MMR_SIZE); + res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+ if (!res) {
+ dev_err(&pdev->dev, "No MMR resource found\n");
+ goto error;
+ }
+
+ priv->mmraddr = ioremap_nocache(res->start, resource_size(res));
+ if (!priv->mmraddr) { + if (!priv->mmraddr) {
+ dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n"); + dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n");
+ goto error; + goto error;
@ -473,7 +480,13 @@
+ goto error; + goto error;
+ } + }
+ +
+ priv->readaddr = ioremap_nocache(SPI_FLASH_READ, + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res) {
+ dev_err(&pdev->dev, "No flash readmem resource found\n");
+ goto error;
+ }
+
+ priv->readaddr = ioremap_nocache(res->start,
+ flashconfig_tbl[index].byte_cnt); + flashconfig_tbl[index].byte_cnt);
+ if (!priv->readaddr) { + if (!priv->readaddr) {
+ dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n"); + dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n");

Loading…
Cancel
Save