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