Load the regbase/ahbbase 'reg' DT properties using the standard dev_get_addr_index function, and add __iomem to all register variables declarations.
Signed-off-by: Jason A. Rush <[email protected]> --- Changed in v2: None drivers/spi/cadence_qspi.c | 25 ++++++++++++++----------- drivers/spi/cadence_qspi.h | 28 ++++++++++++++-------------- drivers/spi/cadence_qspi_apb.c | 24 ++++++++++++------------ 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 9a6e41f330..09f2ec3528 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -40,7 +40,7 @@ static int cadence_spi_write_speed(struct udevice *bus, uint hz) static int spi_calibration(struct udevice *bus, uint hz) { struct cadence_spi_priv *priv = dev_get_priv(bus); - void *base = priv->regbase; + void __iomem *base = priv->regbase; u8 opcode_rdid = 0x9F; unsigned int idcode = 0, temp = 0; int err = 0, i, range_lo = -1, range_hi = -1; @@ -190,7 +190,7 @@ static int cadence_spi_xfer(struct udevice *dev, unsigned int bitlen, struct cadence_spi_platdata *plat = bus->platdata; struct cadence_spi_priv *priv = dev_get_priv(bus); struct dm_spi_slave_platdata *dm_plat = dev_get_parent_platdata(dev); - void *base = priv->regbase; + void __iomem *base = priv->regbase; u8 *cmd_buf = priv->cmd_buf; size_t data_bytes; int err = 0; @@ -284,18 +284,21 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) const void *blob = gd->fdt_blob; int node = dev_of_offset(bus); int subnode; - u32 data[4]; - int ret; - /* 2 base addresses are needed, lets get them from the DT */ - ret = fdtdec_get_int_array(blob, node, "reg", data, ARRAY_SIZE(data)); - if (ret) { - printf("Error: Can't get base addresses (ret=%d)!\n", ret); - return -ENODEV; + /* Load the regbase from the first 'reg' property */ + plat->regbase = (void __iomem *)dev_get_addr_index(bus, 0); + if (IS_ERR(plat->regbase)) { + printf("Error: Can't get regbase address!\n"); + return PTR_ERR(plat->regbase); + } + + /* Load the ahbbase from the second 'reg' property */ + plat->ahbbase = (void __iomem *)dev_get_addr_index(bus, 1); + if (IS_ERR(plat->ahbbase)) { + printf("Error: Can't get ahbbase address!\n"); + return PTR_ERR(plat->ahbbase); } - plat->regbase = (void *)data[0]; - plat->ahbbase = (void *)data[2]; plat->sram_size = fdtdec_get_int(blob, node, "sram-size", 128); /* All other paramters are embedded in the child node */ diff --git a/drivers/spi/cadence_qspi.h b/drivers/spi/cadence_qspi.h index d1927a4003..da21b1346d 100644 --- a/drivers/spi/cadence_qspi.h +++ b/drivers/spi/cadence_qspi.h @@ -16,8 +16,8 @@ struct cadence_spi_platdata { unsigned int max_hz; - void *regbase; - void *ahbbase; + void __iomem *regbase; + void __iomem *ahbbase; u32 page_size; u32 block_size; @@ -29,8 +29,8 @@ struct cadence_spi_platdata { }; struct cadence_spi_priv { - void *regbase; - void *ahbbase; + void __iomem *regbase; + void __iomem *ahbbase; size_t cmd_len; u8 cmd_buf[32]; size_t data_len; @@ -43,12 +43,12 @@ struct cadence_spi_priv { /* Functions call declaration */ void cadence_qspi_apb_controller_init(struct cadence_spi_platdata *plat); -void cadence_qspi_apb_controller_enable(void *reg_base_addr); -void cadence_qspi_apb_controller_disable(void *reg_base_addr); +void cadence_qspi_apb_controller_enable(void __iomem *reg_base_addr); +void cadence_qspi_apb_controller_disable(void __iomem *reg_base_addr); -int cadence_qspi_apb_command_read(void *reg_base_addr, +int cadence_qspi_apb_command_read(void __iomem *reg_base_addr, unsigned int cmdlen, const u8 *cmdbuf, unsigned int rxlen, u8 *rxbuf); -int cadence_qspi_apb_command_write(void *reg_base_addr, +int cadence_qspi_apb_command_write(void __iomem *reg_base_addr, unsigned int cmdlen, const u8 *cmdbuf, unsigned int txlen, const u8 *txbuf); @@ -61,17 +61,17 @@ int cadence_qspi_apb_indirect_write_setup(struct cadence_spi_platdata *plat, int cadence_qspi_apb_indirect_write_execute(struct cadence_spi_platdata *plat, unsigned int txlen, const u8 *txbuf); -void cadence_qspi_apb_chipselect(void *reg_base, +void cadence_qspi_apb_chipselect(void __iomem *reg_base, unsigned int chip_select, unsigned int decoder_enable); -void cadence_qspi_apb_set_clk_mode(void *reg_base, uint mode); -void cadence_qspi_apb_config_baudrate_div(void *reg_base, +void cadence_qspi_apb_set_clk_mode(void __iomem *reg_base, uint mode); +void cadence_qspi_apb_config_baudrate_div(void __iomem *reg_base, unsigned int ref_clk_hz, unsigned int sclk_hz); -void cadence_qspi_apb_delay(void *reg_base, +void cadence_qspi_apb_delay(void __iomem *reg_base, unsigned int ref_clk, unsigned int sclk_hz, unsigned int tshsl_ns, unsigned int tsd2d_ns, unsigned int tchsh_ns, unsigned int tslch_ns); -void cadence_qspi_apb_enter_xip(void *reg_base, char xip_dummy); -void cadence_qspi_apb_readdata_capture(void *reg_base, +void cadence_qspi_apb_enter_xip(void __iomem *reg_base, char xip_dummy); +void cadence_qspi_apb_readdata_capture(void __iomem *reg_base, unsigned int bypass, unsigned int delay); #endif /* __CADENCE_QSPI_H__ */ diff --git a/drivers/spi/cadence_qspi_apb.c b/drivers/spi/cadence_qspi_apb.c index 907c6edf0a..52ec892c4a 100644 --- a/drivers/spi/cadence_qspi_apb.c +++ b/drivers/spi/cadence_qspi_apb.c @@ -190,7 +190,7 @@ static unsigned int cadence_qspi_apb_cmd2addr(const unsigned char *addr_buf, return addr; } -void cadence_qspi_apb_controller_enable(void *reg_base) +void cadence_qspi_apb_controller_enable(void __iomem *reg_base) { unsigned int reg; reg = readl(reg_base + CQSPI_REG_CONFIG); @@ -198,7 +198,7 @@ void cadence_qspi_apb_controller_enable(void *reg_base) writel(reg, reg_base + CQSPI_REG_CONFIG); } -void cadence_qspi_apb_controller_disable(void *reg_base) +void cadence_qspi_apb_controller_disable(void __iomem *reg_base) { unsigned int reg; reg = readl(reg_base + CQSPI_REG_CONFIG); @@ -207,7 +207,7 @@ void cadence_qspi_apb_controller_disable(void *reg_base) } /* Return 1 if idle, otherwise return 0 (busy). */ -static unsigned int cadence_qspi_wait_idle(void *reg_base) +static unsigned int cadence_qspi_wait_idle(void __iomem *reg_base) { unsigned int start, count = 0; /* timeout in unit of ms */ @@ -233,7 +233,7 @@ static unsigned int cadence_qspi_wait_idle(void *reg_base) return 0; } -void cadence_qspi_apb_readdata_capture(void *reg_base, +void cadence_qspi_apb_readdata_capture(void __iomem *reg_base, unsigned int bypass, unsigned int delay) { unsigned int reg; @@ -257,7 +257,7 @@ void cadence_qspi_apb_readdata_capture(void *reg_base, cadence_qspi_apb_controller_enable(reg_base); } -void cadence_qspi_apb_config_baudrate_div(void *reg_base, +void cadence_qspi_apb_config_baudrate_div(void __iomem *reg_base, unsigned int ref_clk_hz, unsigned int sclk_hz) { unsigned int reg; @@ -287,7 +287,7 @@ void cadence_qspi_apb_config_baudrate_div(void *reg_base, cadence_qspi_apb_controller_enable(reg_base); } -void cadence_qspi_apb_set_clk_mode(void *reg_base, uint mode) +void cadence_qspi_apb_set_clk_mode(void __iomem *reg_base, uint mode) { unsigned int reg; @@ -305,7 +305,7 @@ void cadence_qspi_apb_set_clk_mode(void *reg_base, uint mode) cadence_qspi_apb_controller_enable(reg_base); } -void cadence_qspi_apb_chipselect(void *reg_base, +void cadence_qspi_apb_chipselect(void __iomem *reg_base, unsigned int chip_select, unsigned int decoder_enable) { unsigned int reg; @@ -339,7 +339,7 @@ void cadence_qspi_apb_chipselect(void *reg_base, cadence_qspi_apb_controller_enable(reg_base); } -void cadence_qspi_apb_delay(void *reg_base, +void cadence_qspi_apb_delay(void __iomem *reg_base, unsigned int ref_clk, unsigned int sclk_hz, unsigned int tshsl_ns, unsigned int tsd2d_ns, unsigned int tchsh_ns, unsigned int tslch_ns) @@ -407,7 +407,7 @@ void cadence_qspi_apb_controller_init(struct cadence_spi_platdata *plat) cadence_qspi_apb_controller_enable(plat->regbase); } -static int cadence_qspi_apb_exec_flash_cmd(void *reg_base, +static int cadence_qspi_apb_exec_flash_cmd(void __iomem *reg_base, unsigned int reg) { unsigned int retry = CQSPI_REG_RETRY; @@ -438,7 +438,7 @@ static int cadence_qspi_apb_exec_flash_cmd(void *reg_base, } /* For command RDID, RDSR. */ -int cadence_qspi_apb_command_read(void *reg_base, +int cadence_qspi_apb_command_read(void __iomem *reg_base, unsigned int cmdlen, const u8 *cmdbuf, unsigned int rxlen, u8 *rxbuf) { @@ -480,7 +480,7 @@ int cadence_qspi_apb_command_read(void *reg_base, } /* For commands: WRSR, WREN, WRDI, CHIP_ERASE, BE, etc. */ -int cadence_qspi_apb_command_write(void *reg_base, unsigned int cmdlen, +int cadence_qspi_apb_command_write(void __iomem *reg_base, unsigned int cmdlen, const u8 *cmdbuf, unsigned int txlen, const u8 *txbuf) { unsigned int reg = 0; @@ -793,7 +793,7 @@ failwr: return ret; } -void cadence_qspi_apb_enter_xip(void *reg_base, char xip_dummy) +void cadence_qspi_apb_enter_xip(void __iomem *reg_base, char xip_dummy) { unsigned int reg; -- 2.11.0 _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/listinfo/u-boot

