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]
