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
This commit is contained in:
parent
1dab970e8b
commit
08a9fcb0ef
2 changed files with 24 additions and 11 deletions
|
@ -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…
Reference in a new issue