CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Amit Kumar Mahapatra <[email protected]>
CC: Michal Simek <[email protected]>
CC: Sai Krishna Potthuri <[email protected]>
CC: Tejas Prajapati Rameshchandra <[email protected]>
CC: Naga Sureshkumar Relli <[email protected]>
CC: Shubhrajyoti Datta <[email protected]>
CC: Ricardo Ribalda Delgado <[email protected]>

tree:   https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.15_LTS
head:   1870e0fa79a9d58c6748c34550f3ccea0b515933
commit: 3973536c456079bf3d09e9a97bf33d29422b183f [861/1029] spi: spi-xilinx: 
Updated axi-qspi controller driver
:::::: branch date: 2 days ago
:::::: commit date: 8 weeks ago
config: nios2-randconfig-m031-20220324 
(https://download.01.org/0day-ci/archive/20220326/[email protected]/config)
compiler: nios2-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/spi/spi-xilinx.c:848 xilinx_spi_probe() error: uninitialized symbol 
'cs_num'.

vim +/cs_num +848 drivers/spi/spi-xilinx.c

ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  607  
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  608  
/* This driver supports single master mode only. Hence Tx FIFO Empty
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  609   
* is the only interrupt we care about.
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  610   
* Receive FIFO Overrun, Transmit FIFO Underrun, Mode Fault, and Slave Mode
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  611   
* Fault are not to happen.
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  612   
*/
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  613  
static irqreturn_t xilinx_spi_irq(int irq, void *dev_id)
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  614  {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  615   
struct spi_master *master = dev_id;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  616   
struct xilinx_spi *xspi = spi_master_get_devdata(dev_id);
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  617   
u32 ipif_isr;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  618   
irqreturn_t status = IRQ_NONE;
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  619  
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  620   
/* Get the IPIF interrupts, and clear them immediately */
86fc593599c11b6 drivers/spi/xilinx_spi.c Richard Röjfors      2009-11-13  621   
ipif_isr = xspi->read_fn(xspi->regs + XIPIF_V123B_IISR_OFFSET);
86fc593599c11b6 drivers/spi/xilinx_spi.c Richard Röjfors      2009-11-13  622   
xspi->write_fn(ipif_isr, xspi->regs + XIPIF_V123B_IISR_OFFSET);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  623   
if (ipif_isr & XSPI_INTR_TX_EMPTY)  {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  624   
        /* Transmission completed */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  625   
        xspi->rx_fifo(xspi);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  626   
        if (xspi->bytes_to_transfer) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  627   
                /* There is more data to send */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  628   
                xspi->tx_fifo(xspi);
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  629   
        }
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  630   
        status = IRQ_HANDLED;
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  631   
}
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  632  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  633   
if (!xspi->bytes_to_receive && !xspi->bytes_to_transfer) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  634   
        spi_finalize_current_transfer(master);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  635   
        /* Disable the interrupts here. */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  636   
        xspi->write_fn(0x0, xspi->regs + XIPIF_V123B_DGIER_OFFSET);
4c9a761402d780b drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  637   
}
4c9a761402d780b drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  638  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  639   
return status;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  640  }
7cb2abd05fe1f9a drivers/spi/spi-xilinx.c Mark Brown           2013-07-05  641  
static int xilinx_spi_probe(struct platform_device *pdev)
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  642  {
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  643   
struct xilinx_spi *xspi;
ad3fdbcaf98dc12 drivers/spi/spi-xilinx.c Michal Simek         2013-07-08  644   
struct resource *res;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  645   
int ret;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  646   
u32 num_cs = 0, bits_per_word = 8;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  647   
u32 cs_num;
d81c0bbbf840865 drivers/spi/spi-xilinx.c Mark Brown           2013-07-03  648   
struct spi_master *master;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  649   
struct device_node *nc;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  650   
u32 tmp, rx_bus_width, fifo_size;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  651   
bool startup_block;
d81c0bbbf840865 drivers/spi/spi-xilinx.c Mark Brown           2013-07-03  652  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  653   
if (of_property_read_u32(pdev->dev.of_node, "num-cs", &num_cs))
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  654   
        dev_info(&pdev->dev,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  655   
                 "Missing num-cs optional property, assuming default as <1>\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  656   
if (!num_cs)
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  657   
        num_cs = 1;
d81c0bbbf840865 drivers/spi/spi-xilinx.c Mark Brown           2013-07-03  658  
eb25f16c6f44693 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  659   
if (num_cs > XILINX_SPI_MAX_CS) {
eb25f16c6f44693 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  660   
        dev_err(&pdev->dev, "Invalid number of spi slaves\n");
eb25f16c6f44693 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  661   
        return -EINVAL;
eb25f16c6f44693 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  662   
}
eb25f16c6f44693 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  663  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  664   
startup_block = of_property_read_bool(pdev->dev.of_node,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  665   
                                      "xlnx,startup-block");
7cb2abd05fe1f9a drivers/spi/spi-xilinx.c Mark Brown           2013-07-05  666   
master = spi_alloc_master(&pdev->dev, sizeof(struct xilinx_spi));
d5af91a1faca68e drivers/spi/xilinx_spi.c Richard Röjfors      2009-11-13  667   
if (!master)
d81c0bbbf840865 drivers/spi/spi-xilinx.c Mark Brown           2013-07-03  668   
        return -ENODEV;
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  669  
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  670   
xspi = spi_master_get_devdata(master);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  671   
master->dev.of_node = pdev->dev.of_node;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  672   
platform_set_drvdata(pdev, master);
ad3fdbcaf98dc12 drivers/spi/spi-xilinx.c Michal Simek         2013-07-08  673   
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ad3fdbcaf98dc12 drivers/spi/spi-xilinx.c Michal Simek         2013-07-08  674   
xspi->regs = devm_ioremap_resource(&pdev->dev, res);
c40537d008ab1b4 drivers/spi/spi-xilinx.c Mark Brown           2013-07-01  675   
if (IS_ERR(xspi->regs)) {
c40537d008ab1b4 drivers/spi/spi-xilinx.c Mark Brown           2013-07-01  676   
        ret = PTR_ERR(xspi->regs);
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  677   
        goto put_master;
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  678   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  679   
ret = of_property_read_u32(pdev->dev.of_node, "fifo-size",
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  680   
                           &fifo_size);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  681   
if (ret < 0) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  682   
        dev_err(&pdev->dev,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  683   
                "Missing fifo size\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  684   
        return -EINVAL;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  685   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  686   
if (of_property_read_u32(pdev->dev.of_node, "bits-per-word",
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  687   
                         &bits_per_word))
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  688   
        dev_info(&pdev->dev,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  689   
                 "Missing bits-per-word optional property, assuming default as 
<8>\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  690  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  691   
xspi->rx_bus_width = XSPI_ONE_BITS_PER_WORD;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  692   
for_each_available_child_of_node(pdev->dev.of_node, nc) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  693   
        if (startup_block) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  694   
                ret = of_property_read_u32(nc, "reg",
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  695   
                                           &cs_num);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  696   
                if (ret < 0)
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  697   
                        return -EINVAL;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  698   
        }
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  699   
        ret = of_property_read_u32(nc, "spi-rx-bus-width",
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  700   
                                   &rx_bus_width);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  701   
        if (!ret) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  702   
                xspi->rx_bus_width = rx_bus_width;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  703   
                break;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  704   
        }
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  705   
}
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  706  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  707   
xspi->axi_clk = devm_clk_get(&pdev->dev, "axi_clk");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  708   
if (IS_ERR(xspi->axi_clk)) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  709   
        if (PTR_ERR(xspi->axi_clk) != -ENOENT) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  710   
                ret = PTR_ERR(xspi->axi_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  711   
                goto put_master;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  712   
        }
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  713  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  714   
        /*
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  715   
         * Clock framework support is optional, continue on,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  716   
         * anyways if we don't find a matching clock
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  717   
         */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  718   
        xspi->axi_clk = NULL;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  719   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  720  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  721   
ret = clk_prepare(xspi->axi_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  722   
if (ret) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  723   
        dev_err(&pdev->dev, "Failed to prepare AXI clock\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  724   
        goto put_master;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  725   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  726  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  727   
xspi->axi4_clk = devm_clk_get(&pdev->dev, "axi4_clk");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  728   
if (IS_ERR(xspi->axi4_clk)) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  729   
        if (PTR_ERR(xspi->axi4_clk) != -ENOENT) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  730   
                ret = PTR_ERR(xspi->axi4_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  731   
                goto clk_unprepare_axi_clk;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  732   
        }
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  733  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  734   
        /*
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  735   
         * Clock framework support is optional, continue on,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  736   
         * anyways if we don't find a matching clock
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  737   
         */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  738   
        xspi->axi4_clk = NULL;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  739   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  740  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  741   
ret = clk_prepare(xspi->axi4_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  742   
if (ret) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  743   
        dev_err(&pdev->dev, "Failed to prepare AXI4 clock\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  744   
        goto clk_unprepare_axi_clk;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  745   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  746  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  747   
xspi->spi_clk = devm_clk_get(&pdev->dev, "spi_clk");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  748   
if (IS_ERR(xspi->spi_clk)) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  749   
        if (PTR_ERR(xspi->spi_clk) != -ENOENT) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  750   
                ret = PTR_ERR(xspi->spi_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  751   
                goto clk_unprepare_axi4_clk;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  752   
        }
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  753  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  754   
        /*
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  755   
         * Clock framework support is optional, continue on,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  756   
         * anyways if we don't find a matching clock
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  757   
         */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  758   
        xspi->spi_clk = NULL;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  759   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  760  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  761   
ret = clk_prepare(xspi->spi_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  762   
if (ret) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  763   
        dev_err(&pdev->dev, "Failed to prepare SPI clock\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  764   
        goto clk_unprepare_axi4_clk;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  765   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  766  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  767   
pm_runtime_set_autosuspend_delay(&pdev->dev, SPI_AUTOSUSPEND_TIMEOUT);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  768   
pm_runtime_use_autosuspend(&pdev->dev);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  769   
pm_runtime_enable(&pdev->dev);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  770   
ret = pm_runtime_get_sync(&pdev->dev);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  771   
if (ret < 0)
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  772   
        goto clk_unprepare_all;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  773  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  774   
xspi->dev = &pdev->dev;
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  775  
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  776   
/*
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  777   
 * Detect endianess on the IP via loop bit in CR. Detection
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  778   
 * must be done before reset is sent because incorrect reset
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  779   
 * value generates error interrupt.
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  780   
 * Setup little endian helper functions first and try to use them
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  781   
 * and check if bit was correctly setup or not.
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  782   
 */
0635287a308d38b drivers/spi/spi-xilinx.c Mark Brown           2015-01-30  783   
xspi->read_fn = xspi_read32;
0635287a308d38b drivers/spi/spi-xilinx.c Mark Brown           2015-01-30  784   
xspi->write_fn = xspi_write32;
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  785  
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  786   
xspi->write_fn(XSPI_CR_LOOP, xspi->regs + XSPI_CR_OFFSET);
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  787   
tmp = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET);
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  788   
tmp &= XSPI_CR_LOOP;
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  789   
if (tmp != XSPI_CR_LOOP) {
0635287a308d38b drivers/spi/spi-xilinx.c Mark Brown           2015-01-30  790   
        xspi->read_fn = xspi_read32_be;
0635287a308d38b drivers/spi/spi-xilinx.c Mark Brown           2015-01-30  791   
        xspi->write_fn = xspi_write32_be;
86fc593599c11b6 drivers/spi/xilinx_spi.c Richard Röjfors      2009-11-13  792   
}
082339bc63cccf8 drivers/spi/spi-xilinx.c Michal Simek         2013-06-04  793  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  794   
xspi->buffer_size = fifo_size;
7b3b7432ae7848a drivers/spi/spi-xilinx.c Michal Simek         2013-07-09  795   
xspi->irq = platform_get_irq(pdev, 0);
4db9bf548bb00d8 drivers/spi/spi-xilinx.c Lars-Peter Clausen   2016-07-15  796   
if (xspi->irq < 0 && xspi->irq != -ENXIO) {
4db9bf548bb00d8 drivers/spi/spi-xilinx.c Lars-Peter Clausen   2016-07-15  797   
        ret = xspi->irq;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  798   
        goto clk_unprepare_all;
4db9bf548bb00d8 drivers/spi/spi-xilinx.c Lars-Peter Clausen   2016-07-15  799   
} else if (xspi->irq >= 0) {
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  800   
        /* Register for SPI Interrupt */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  801   
        ret = devm_request_irq(&pdev->dev, xspi->irq, xilinx_spi_irq,
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  802   
                               0, dev_name(&pdev->dev), master);
d5af91a1faca68e drivers/spi/xilinx_spi.c Richard Röjfors      2009-11-13  803   
        if (ret)
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  804   
                goto clk_unprepare_all;
5fe11cc09ce81b0 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  805   
}
5fe11cc09ce81b0 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  806  
5fe11cc09ce81b0 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  807   
/* SPI controller initializations */
5fe11cc09ce81b0 drivers/spi/spi-xilinx.c Ricardo Ribalda      2015-01-28  808   
xspi_init_hw(xspi);
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  809  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  810   
pm_runtime_put(&pdev->dev);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  811  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  812   
master->bus_num = pdev->id;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  813   
master->num_chipselect = num_cs;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  814   
master->setup = xspi_setup;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  815   
master->set_cs = xspi_chipselect;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  816   
master->transfer_one = xspi_start_transfer;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  817   
master->prepare_transfer_hardware = xspi_prepare_transfer_hardware;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  818   
master->unprepare_transfer_hardware = xspi_unprepare_transfer_hardware;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  819   
master->bits_per_word_mask = SPI_BPW_MASK(8);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  820   
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  821  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  822   
xspi->bytes_per_word = bits_per_word / 8;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  823   
xspi->tx_fifo = xspi_fill_tx_fifo_8;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  824   
xspi->rx_fifo = xspi_read_rx_fifo_8;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  825   
if (xspi->rx_bus_width == XSPI_RX_ONE_WIRE) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  826   
        if (xspi->bytes_per_word == XSPI_TWO_BITS_PER_WORD) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  827   
                xspi->tx_fifo = xspi_fill_tx_fifo_16;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  828   
                xspi->rx_fifo = xspi_read_rx_fifo_16;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  829   
        } else if (xspi->bytes_per_word == XSPI_FOUR_BITS_PER_WORD) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  830   
                xspi->tx_fifo = xspi_fill_tx_fifo_32;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  831   
                xspi->rx_fifo = xspi_read_rx_fifo_32;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  832   
        }
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  833   
} else if (xspi->rx_bus_width == XSPI_RX_FOUR_WIRE) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  834   
        master->mode_bits |= SPI_TX_QUAD | SPI_RX_QUAD;
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  835   
} else {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  836   
        dev_err(&pdev->dev, "Dual Mode not supported\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  837   
        goto clk_unprepare_all;
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  838   
}
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  839   
xspi->cs_inactive = 0xffffffff;
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  840  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  841   
/*
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  842   
 * This is the work around for the startup block issue in
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  843   
 * the spi controller. SPI clock is passing through STARTUP
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  844   
 * block to FLASH. STARTUP block don't provide clock as soon
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  845   
 * as QSPI provides command. So first command fails.
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  846   
 */
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  847   
if (startup_block)
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26 @848   
        xilinx_spi_startup_block(xspi, cs_num);
8fd8821b62397f8 drivers/spi/xilinx_spi.c Grant Likely         2010-10-14  849  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  850   
ret = spi_register_master(master);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  851   
if (ret) {
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  852   
        dev_err(&pdev->dev, "spi_register_master failed\n");
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  853   
        goto clk_unprepare_all;
eae6cb31d890e28 drivers/spi/xilinx_spi.c Grant Likely         2010-10-14  854   
}
eae6cb31d890e28 drivers/spi/xilinx_spi.c Grant Likely         2010-10-14  855  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  856   
return ret;
eae6cb31d890e28 drivers/spi/xilinx_spi.c Grant Likely         2010-10-14  857  
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  858  
clk_unprepare_all:
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  859   
pm_runtime_disable(&pdev->dev);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  860   
pm_runtime_set_suspended(&pdev->dev);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  861   
clk_unprepare(xspi->spi_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  862  
clk_unprepare_axi4_clk:
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  863   
clk_unprepare(xspi->axi4_clk);
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  864  
clk_unprepare_axi_clk:
3973536c456079b drivers/spi/spi-xilinx.c Amit Kumar Mahapatra 2020-01-26  865   
clk_unprepare(xspi->axi_clk);
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  866  
put_master:
ae918c02d365c88 drivers/spi/xilinx_spi.c Andrei Konovalov     2007-07-17  867   
spi_master_put(master);
eae6cb31d890e28 drivers/spi/xilinx_spi.c Grant Likely         2010-10-14  868  
d81c0bbbf840865 drivers/spi/spi-xilinx.c Mark Brown           2013-07-03  869   
return ret;
eae6cb31d890e28 drivers/spi/xilinx_spi.c Grant Likely         2010-10-14  870  }
eae6cb31d890e28 drivers/spi/xilinx_spi.c Grant Likely         2010-10-14  871  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to