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 <[email protected]>
---
 target/linux/atheros/patches-3.10/100-board.patch    | 16 ++++++++--------
 target/linux/atheros/patches-3.10/120-spiflash.patch | 19 ++++++++++++++++---
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/target/linux/atheros/patches-3.10/100-board.patch 
b/target/linux/atheros/patches-3.10/100-board.patch
index eb927f7..d7bd94a 100644
--- a/target/linux/atheros/patches-3.10/100-board.patch
+++ b/target/linux/atheros/patches-3.10/100-board.patch
@@ -750,7 +750,7 @@
 +#define AR2315_ENET0            0x10500000      /* ETHERNET MMR */
 +#define AR2315_DSLBASE          0x11000000      /* RESET CONTROL 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 */
 +
 +/*
@@ -2521,16 +2521,16 @@
 +
 +static struct resource ar2315_spiflash_res[] = {
 +      {
-+              .name = "flash_base",
++              .name = "spiflash_read",
 +              .flags = IORESOURCE_MEM,
-+              .start = KSEG1ADDR(AR2315_SPI_READ),
-+              .end = KSEG1ADDR(AR2315_SPI_READ) + 0x1000000 - 1,
++              .start = AR2315_SPI_READ,
++              .end = AR2315_SPI_READ + 0x1000000 - 1,
 +      },
 +      {
-+              .name = "flash_regs",
++              .name = "spiflash_mmr",
 +              .flags = IORESOURCE_MEM,
-+              .start = 0x11300000,
-+              .end = 0x11300012,
++              .start = AR2315_SPI_MMR,
++              .end = AR2315_SPI_MMR + 12 - 1,
 +      },
 +};
 +
@@ -2553,7 +2553,7 @@
 + */
 +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
diff --git a/target/linux/atheros/patches-3.10/120-spiflash.patch 
b/target/linux/atheros/patches-3.10/120-spiflash.patch
index 262af60..8630a3a 100644
--- a/target/linux/atheros/patches-3.10/120-spiflash.patch
+++ b/target/linux/atheros/patches-3.10/120-spiflash.patch
@@ -23,7 +23,7 @@
  
 --- /dev/null
 +++ 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
@@ -452,6 +452,7 @@
 +{
 +      struct spiflash_priv *priv;
 +      struct mtd_info *mtd;
++      struct resource *res;
 +      int index;
 +      int result = 0;
 +
@@ -461,7 +462,13 @@
 +      priv->state = FL_READY;
 +      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) {
 +              dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n");
 +              goto error;
@@ -473,7 +480,13 @@
 +              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);
 +      if (!priv->readaddr) {
 +              dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n");
-- 
1.8.1.5
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to