Cadence QSPI provides a way to automatically decode CS based on the
offset accessed within memory map window. This feature cannot be
supported in spi-mem framework as controller driver would not have
access to flash geometry. Therefore drop this feature in preparation to
moving to spi-mem.

Note that, this feature never worked in the driver (Direct/Indirect mode
accesses did not take into account size of flash on other CSs) and there
are no users of this feature in kernel. Therefore dropping this should
not cause a regression

Signed-off-by: Vignesh Raghavendra <vigne...@ti.com>
---
 .../mtd/spi-nor/controllers/cadence-quadspi.c | 59 +++----------------
 1 file changed, 9 insertions(+), 50 deletions(-)

diff --git a/drivers/mtd/spi-nor/controllers/cadence-quadspi.c 
b/drivers/mtd/spi-nor/controllers/cadence-quadspi.c
index 494dcab4aaaa..fa54f85e16d7 100644
--- a/drivers/mtd/spi-nor/controllers/cadence-quadspi.c
+++ b/drivers/mtd/spi-nor/controllers/cadence-quadspi.c
@@ -77,11 +77,7 @@ struct cqspi_st {
        dma_addr_t              mmap_phys_base;
 
        int                     current_cs;
-       int                     current_page_size;
-       int                     current_erase_size;
-       int                     current_addr_width;
        unsigned long           master_ref_clk_hz;
-       bool                    is_decoded_cs;
        u32                     fifo_depth;
        u32                     fifo_width;
        bool                    rclk_en;
@@ -715,19 +711,15 @@ static void cqspi_chipselect(struct spi_nor *nor)
        unsigned int reg;
 
        reg = readl(reg_base + CQSPI_REG_CONFIG);
-       if (cqspi->is_decoded_cs) {
-               reg |= CQSPI_REG_CONFIG_DECODE_MASK;
-       } else {
-               reg &= ~CQSPI_REG_CONFIG_DECODE_MASK;
+       reg &= ~CQSPI_REG_CONFIG_DECODE_MASK;
 
-               /* Convert CS if without decoder.
-                * CS0 to 4b'1110
-                * CS1 to 4b'1101
-                * CS2 to 4b'1011
-                * CS3 to 4b'0111
-                */
-               chip_select = 0xF & ~(1 << chip_select);
-       }
+       /* Convert CS if without decoder.
+        * CS0 to 4b'1110
+        * CS1 to 4b'1101
+        * CS2 to 4b'1011
+        * CS3 to 4b'0111
+        */
+       chip_select = 0xF & ~(1 << chip_select);
 
        reg &= ~(CQSPI_REG_CONFIG_CHIPSELECT_MASK
                 << CQSPI_REG_CONFIG_CHIPSELECT_LSB);
@@ -736,32 +728,6 @@ static void cqspi_chipselect(struct spi_nor *nor)
        writel(reg, reg_base + CQSPI_REG_CONFIG);
 }
 
-static void cqspi_configure_cs_and_sizes(struct spi_nor *nor)
-{
-       struct cqspi_flash_pdata *f_pdata = nor->priv;
-       struct cqspi_st *cqspi = f_pdata->cqspi;
-       void __iomem *iobase = cqspi->iobase;
-       unsigned int reg;
-
-       /* configure page size and block size. */
-       reg = readl(iobase + CQSPI_REG_SIZE);
-       reg &= ~(CQSPI_REG_SIZE_PAGE_MASK << CQSPI_REG_SIZE_PAGE_LSB);
-       reg &= ~(CQSPI_REG_SIZE_BLOCK_MASK << CQSPI_REG_SIZE_BLOCK_LSB);
-       reg &= ~CQSPI_REG_SIZE_ADDRESS_MASK;
-       reg |= (nor->page_size << CQSPI_REG_SIZE_PAGE_LSB);
-       reg |= (ilog2(nor->mtd.erasesize) << CQSPI_REG_SIZE_BLOCK_LSB);
-       reg |= (nor->addr_width - 1);
-       writel(reg, iobase + CQSPI_REG_SIZE);
-
-       /* configure the chip select */
-       cqspi_chipselect(nor);
-
-       /* Store the new configuration of the controller */
-       cqspi->current_page_size = nor->page_size;
-       cqspi->current_erase_size = nor->mtd.erasesize;
-       cqspi->current_addr_width = nor->addr_width;
-}
-
 static unsigned int calculate_ticks_for_ns(const unsigned int ref_clk_hz,
                                           const unsigned int ns_val)
 {
@@ -867,18 +833,13 @@ static void cqspi_configure(struct spi_nor *nor)
        int switch_cs = (cqspi->current_cs != f_pdata->cs);
        int switch_ck = (cqspi->sclk != sclk);
 
-       if ((cqspi->current_page_size != nor->page_size) ||
-           (cqspi->current_erase_size != nor->mtd.erasesize) ||
-           (cqspi->current_addr_width != nor->addr_width))
-               switch_cs = 1;
-
        if (switch_cs || switch_ck)
                cqspi_controller_enable(cqspi, 0);
 
        /* Switch chip select. */
        if (switch_cs) {
                cqspi->current_cs = f_pdata->cs;
-               cqspi_configure_cs_and_sizes(nor);
+               cqspi_chipselect(nor);
        }
 
        /* Setup baudrate divisor and delays */
@@ -1145,8 +1106,6 @@ static int cqspi_of_get_pdata(struct platform_device 
*pdev)
        struct device_node *np = pdev->dev.of_node;
        struct cqspi_st *cqspi = platform_get_drvdata(pdev);
 
-       cqspi->is_decoded_cs = of_property_read_bool(np, "cdns,is-decoded-cs");
-
        if (of_property_read_u32(np, "cdns,fifo-depth", &cqspi->fifo_depth)) {
                dev_err(&pdev->dev, "couldn't determine fifo-depth\n");
                return -ENXIO;
-- 
2.26.2

Reply via email to