]> Git Repo - linux.git/commitdiff
spi: Merge up fixes
authorMark Brown <[email protected]>
Thu, 12 Sep 2024 11:38:44 +0000 (12:38 +0100)
committerMark Brown <[email protected]>
Thu, 12 Sep 2024 11:38:44 +0000 (12:38 +0100)
A patch for Qualcomm depends on some fixes.

1  2 
MAINTAINERS
drivers/spi/spi-bcm63xx.c
drivers/spi/spi-cadence-quadspi.c
drivers/spi/spi-zynqmp-gqspi.c
drivers/spi/spidev.c

diff --combined MAINTAINERS
index bc5d242deb29ab308a483ca57021a47e9f382e62,931838892e85dcdc8591363d2e3ad0a2799cf9b8..84c15f2f2a1be1823b8fb254e062c6daf3c44624
@@@ -1202,13 -1202,6 +1202,13 @@@ W:    https://ez.analog.com/linux-software
  F:    Documentation/devicetree/bindings/iio/dac/adi,ad3552r.yaml
  F:    drivers/iio/dac/ad3552r.c
  
 +ANALOG DEVICES INC AD4000 DRIVER
 +M:    Marcelo Schmitt <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad4000.yaml
 +
  ANALOG DEVICES INC AD4130 DRIVER
  M:    Cosmin Tanislav <[email protected]>
  L:    [email protected]
@@@ -3511,7 -3504,9 +3511,9 @@@ S:      Maintaine
  W:    http://linux-atm.sourceforge.net
  F:    drivers/atm/
  F:    include/linux/atm*
+ F:    include/linux/sonet.h
  F:    include/uapi/linux/atm*
+ F:    include/uapi/linux/sonet.h
  
  ATMEL MACB ETHERNET DRIVER
  M:    Nicolas Ferre <[email protected]>
@@@ -5313,7 -5308,7 +5315,7 @@@ F:      drivers/media/cec/i2c/ch7322.
  CIRRUS LOGIC AUDIO CODEC DRIVERS
  M:    David Rhodes <[email protected]>
  M:    Richard Fitzgerald <[email protected]>
- L:    [email protected] (moderated for non-subscribers)
+ L:    [email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/sound/cirrus,cs*
@@@ -5382,7 -5377,7 +5384,7 @@@ F:      sound/soc/codecs/lochnagar-sc.
  CIRRUS LOGIC MADERA CODEC DRIVERS
  M:    Charles Keepax <[email protected]>
  M:    Richard Fitzgerald <[email protected]>
- L:    [email protected] (moderated for non-subscribers)
+ L:    [email protected]
  L:    [email protected]
  S:    Supported
  W:    https://github.com/CirrusLogic/linux-drivers/wiki
@@@ -8866,6 -8861,7 +8868,7 @@@ F:      drivers/dma/fsldma.
  FREESCALE DSPI DRIVER
  M:    Vladimir Oltean <[email protected]>
  L:    [email protected]
+ L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/spi/fsl,dspi*.yaml
  F:    drivers/spi/spi-fsl-dspi.c
@@@ -8950,6 -8946,14 +8953,14 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.yaml
  F:    drivers/i2c/busses/i2c-imx-lpi2c.c
  
+ FREESCALE IMX LPSPI DRIVER
+ M:    Frank Li <[email protected]>
+ L:    [email protected]
+ L:    [email protected]
+ S:    Maintained
+ F:    Documentation/devicetree/bindings/spi/spi-fsl-lpspi.yaml
+ F:    drivers/spi/spi-fsl-lpspi.c
  FREESCALE MPC I2C DRIVER
  M:    Chris Packham <[email protected]>
  L:    [email protected]
@@@ -8986,6 -8990,7 +8997,7 @@@ F:      include/linux/fsl/ptp_qoriq.
  FREESCALE QUAD SPI DRIVER
  M:    Han Xu <[email protected]>
  L:    [email protected]
+ L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
  F:    drivers/spi/spi-fsl-qspi.c
@@@ -10180,7 -10185,7 +10192,7 @@@ F:   Documentation/devicetree/bindings/in
  F:    drivers/infiniband/hw/hns/
  
  HISILICON SAS Controller
- M:    Xiang Chen <chenxiang66@hisilicon.com>
+ M:    Yihang Li <liyihang9@huawei.com>
  S:    Supported
  W:    http://www.hisilicon.com
  F:    Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
@@@ -12000,7 -12005,7 +12012,7 @@@ F:   fs/jfs
  JME NETWORK DRIVER
  M:    Guo-Fu Tseng <[email protected]>
  L:    [email protected]
- S:    Maintained
+ S:    Odd Fixes
  F:    drivers/net/ethernet/jme.*
  
  JOURNALLING FLASH FILE SYSTEM V2 (JFFS2)
@@@ -13331,14 -13336,16 +13343,16 @@@ F:        Documentation/devicetree/bindings/i2
  F:    drivers/i2c/muxes/i2c-mux-ltc4306.c
  
  LTP (Linux Test Project)
+ M:    Andrea Cervesato <[email protected]>
  M:    Cyril Hrubis <[email protected]>
  M:    Jan Stancek <[email protected]>
  M:    Petr Vorel <[email protected]>
  M:    Li Wang <[email protected]>
  M:    Yang Xu <[email protected]>
+ M:    Xiao Yang <[email protected]>
  L:    [email protected] (subscribers-only)
  S:    Maintained
- W:    http://linux-test-project.github.io/
+ W:    https://linux-test-project.readthedocs.io/
  T:    git https://github.com/linux-test-project/ltp.git
  
  LTR390 AMBIENT/UV LIGHT SENSOR DRIVER
@@@ -13546,7 -13553,7 +13560,7 @@@ MARVELL GIGABIT ETHERNET DRIVERS (skge/
  M:    Mirko Lindner <[email protected]>
  M:    Stephen Hemminger <[email protected]>
  L:    [email protected]
- S:    Maintained
+ S:    Odd fixes
  F:    drivers/net/ethernet/marvell/sk*
  
  MARVELL LIBERTAS WIRELESS DRIVER
@@@ -15882,15 -15889,19 +15896,19 @@@ F:        drivers/net
  F:    include/dt-bindings/net/
  F:    include/linux/cn_proc.h
  F:    include/linux/etherdevice.h
+ F:    include/linux/ethtool_netlink.h
  F:    include/linux/fcdevice.h
  F:    include/linux/fddidevice.h
  F:    include/linux/hippidevice.h
  F:    include/linux/if_*
  F:    include/linux/inetdevice.h
- F:    include/linux/netdevice.h
+ F:    include/linux/netdev*
+ F:    include/linux/platform_data/wiznet.h
  F:    include/uapi/linux/cn_proc.h
+ F:    include/uapi/linux/ethtool_netlink.h
  F:    include/uapi/linux/if_*
- F:    include/uapi/linux/netdevice.h
+ F:    include/uapi/linux/netdev*
+ F:    tools/testing/selftests/drivers/net/
  X:    drivers/net/wireless/
  
  NETWORKING DRIVERS (WIRELESS)
@@@ -15941,13 -15952,28 +15959,28 @@@ F:        include/linux/framer/framer-provider
  F:    include/linux/framer/framer.h
  F:    include/linux/in.h
  F:    include/linux/indirect_call_wrapper.h
+ F:    include/linux/inet.h
+ F:    include/linux/inet_diag.h
  F:    include/linux/net.h
- F:    include/linux/netdevice.h
+ F:    include/linux/netdev*
+ F:    include/linux/netlink.h
+ F:    include/linux/netpoll.h
+ F:    include/linux/rtnetlink.h
+ F:    include/linux/seq_file_net.h
+ F:    include/linux/skbuff*
  F:    include/net/
+ F:    include/uapi/linux/genetlink.h
+ F:    include/uapi/linux/hsr_netlink.h
  F:    include/uapi/linux/in.h
+ F:    include/uapi/linux/inet_diag.h
+ F:    include/uapi/linux/nbd-netlink.h
  F:    include/uapi/linux/net.h
  F:    include/uapi/linux/net_namespace.h
- F:    include/uapi/linux/netdevice.h
+ F:    include/uapi/linux/netconf.h
+ F:    include/uapi/linux/netdev*
+ F:    include/uapi/linux/netlink.h
+ F:    include/uapi/linux/netlink_diag.h
+ F:    include/uapi/linux/rtnetlink.h
  F:    lib/net_utils.c
  F:    lib/random32.c
  F:    net/
@@@ -16389,6 -16415,7 +16422,7 @@@ M:   Han Xu <[email protected]
  M:    Haibo Chen <[email protected]>
  R:    Yogesh Gaur <[email protected]>
  L:    [email protected]
+ L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/spi/spi-nxp-fspi.yaml
  F:    drivers/spi/spi-nxp-fspi.c
@@@ -18563,7 -18590,7 +18597,7 @@@ F:   drivers/usb/misc/qcom_eud.
  QCOM IPA DRIVER
  M:    Alex Elder <[email protected]>
  L:    [email protected]
- S:    Supported
+ S:    Maintained
  F:    drivers/net/ipa/
  
  QEMU MACHINE EMULATOR AND VIRTUALIZER SUPPORT
@@@ -20358,6 -20385,7 +20392,7 @@@ F:   Documentation/devicetree/bindings/sc
  F:    drivers/scsi/
  F:    drivers/ufs/
  F:    include/scsi/
+ F:    include/uapi/scsi/
  
  SCSI TAPE DRIVER
  M:    Kai Mäkisara <[email protected]>
@@@ -21058,6 -21086,7 +21093,7 @@@ SOCKET TIMESTAMPIN
  M:    Willem de Bruijn <[email protected]>
  S:    Maintained
  F:    Documentation/networking/timestamping.rst
+ F:    include/linux/net_tstamp.h
  F:    include/uapi/linux/net_tstamp.h
  F:    tools/testing/selftests/net/so_txtime.c
  
index 2fb79701a525152784621af2ab74b73899b88965,2fb8d4e55c77732630f31c271281c4f5ae9782ed..ef3a7226db125c300f8eca72f692feac5d4bde6e
@@@ -466,13 -466,13 +466,14 @@@ static const struct platform_device_id 
        {
        },
  };
 +MODULE_DEVICE_TABLE(platform, bcm63xx_spi_dev_match);
  
  static const struct of_device_id bcm63xx_spi_of_match[] = {
        { .compatible = "brcm,bcm6348-spi", .data = &bcm6348_spi_reg_offsets },
        { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets },
        { },
  };
+ MODULE_DEVICE_TABLE(of, bcm63xx_spi_of_match);
  
  static int bcm63xx_spi_probe(struct platform_device *pdev)
  {
  
        bcm_spi_writeb(bs, SPI_INTR_CLEAR_ALL, SPI_INT_STATUS);
  
 -      pm_runtime_enable(&pdev->dev);
 +      ret = devm_pm_runtime_enable(&pdev->dev);
 +      if (ret)
 +              goto out_clk_disable;
  
        /* register and we are done */
        ret = devm_spi_register_controller(dev, host);
        if (ret) {
                dev_err(dev, "spi register failed\n");
 -              goto out_pm_disable;
 +              goto out_clk_disable;
        }
  
        dev_info(dev, "at %pr (irq %d, FIFOs size %d)\n",
  
        return 0;
  
 -out_pm_disable:
 -      pm_runtime_disable(&pdev->dev);
  out_clk_disable:
        clk_disable_unprepare(clk);
  out_err:
index 9c0a4fa5128aab3eced728102d33cd6a06096214,d4607cb89c484008ee0ff521a86dd82e893b3991..1755ca026f08ff817e8104f662129c4324c67990
@@@ -1662,20 -1662,23 +1662,20 @@@ static int cqspi_setup_flash(struct cqs
        unsigned int max_cs = cqspi->num_chipselect - 1;
        struct platform_device *pdev = cqspi->pdev;
        struct device *dev = &pdev->dev;
 -      struct device_node *np = dev->of_node;
        struct cqspi_flash_pdata *f_pdata;
        unsigned int cs;
        int ret;
  
        /* Get flash device data */
 -      for_each_available_child_of_node(dev->of_node, np) {
 +      for_each_available_child_of_node_scoped(dev->of_node, np) {
                ret = of_property_read_u32(np, "reg", &cs);
                if (ret) {
                        dev_err(dev, "Couldn't determine chip select.\n");
 -                      of_node_put(np);
                        return ret;
                }
  
                if (cs >= cqspi->num_chipselect) {
                        dev_err(dev, "Chip select %d out of range.\n", cs);
 -                      of_node_put(np);
                        return -EINVAL;
                } else if (cs < max_cs) {
                        max_cs = cs;
                f_pdata->cs = cs;
  
                ret = cqspi_of_get_flash_pdata(pdev, f_pdata, np);
 -              if (ret) {
 -                      of_node_put(np);
 +              if (ret)
                        return ret;
 -              }
        }
  
        cqspi->num_chipselect = max_cs + 1;
@@@ -1995,13 -2000,25 +1995,25 @@@ static int cqspi_runtime_resume(struct 
  static int cqspi_suspend(struct device *dev)
  {
        struct cqspi_st *cqspi = dev_get_drvdata(dev);
+       int ret;
  
-       return spi_controller_suspend(cqspi->host);
+       ret = spi_controller_suspend(cqspi->host);
+       if (ret)
+               return ret;
+       return pm_runtime_force_suspend(dev);
  }
  
  static int cqspi_resume(struct device *dev)
  {
        struct cqspi_st *cqspi = dev_get_drvdata(dev);
+       int ret;
+       ret = pm_runtime_force_resume(dev);
+       if (ret) {
+               dev_err(dev, "pm_runtime_force_resume failed on resume\n");
+               return ret;
+       }
  
        return spi_controller_resume(cqspi->host);
  }
index e8963e0a6d9a99c959223680c937581995334fb1,558c466135a51b7e99305d896c942ea749b4d926..fcd0ca996684195604ad0ee61d3e8874ad74b8bc
@@@ -1033,6 -1033,18 +1033,18 @@@ static int __maybe_unused zynqmp_runtim
        return 0;
  }
  
+ static unsigned long zynqmp_qspi_timeout(struct zynqmp_qspi *xqspi, u8 bits,
+                                        unsigned long bytes)
+ {
+       unsigned long timeout;
+       /* Assume we are at most 2x slower than the nominal bus speed */
+       timeout = mult_frac(bytes, 2 * 8 * MSEC_PER_SEC,
+                           bits * xqspi->speed_hz);
+       /* And add 100 ms for scheduling delays */
+       return msecs_to_jiffies(timeout + 100);
+ }
  /**
   * zynqmp_qspi_exec_op() - Initiates the QSPI transfer
   * @mem: The SPI memory
@@@ -1049,6 -1061,7 +1061,7 @@@ static int zynqmp_qspi_exec_op(struct s
  {
        struct zynqmp_qspi *xqspi = spi_controller_get_devdata
                                    (mem->spi->controller);
+       unsigned long timeout;
        int err = 0, i;
        u32 genfifoentry = 0;
        u16 opcode = op->cmd.opcode;
                zynqmp_gqspi_write(xqspi, GQSPI_IER_OFST,
                                   GQSPI_IER_GENFIFOEMPTY_MASK |
                                   GQSPI_IER_TXNOT_FULL_MASK);
-               if (!wait_for_completion_timeout
-                   (&xqspi->data_completion, msecs_to_jiffies(1000))) {
+               timeout = zynqmp_qspi_timeout(xqspi, op->cmd.buswidth,
+                                             op->cmd.nbytes);
+               if (!wait_for_completion_timeout(&xqspi->data_completion,
+                                                timeout)) {
                        err = -ETIMEDOUT;
                        goto return_err;
                }
                                   GQSPI_IER_TXEMPTY_MASK |
                                   GQSPI_IER_GENFIFOEMPTY_MASK |
                                   GQSPI_IER_TXNOT_FULL_MASK);
-               if (!wait_for_completion_timeout
-                   (&xqspi->data_completion, msecs_to_jiffies(1000))) {
+               timeout = zynqmp_qspi_timeout(xqspi, op->addr.buswidth,
+                                             op->addr.nbytes);
+               if (!wait_for_completion_timeout(&xqspi->data_completion,
+                                                timeout)) {
                        err = -ETIMEDOUT;
                        goto return_err;
                }
                                                   GQSPI_IER_RXEMPTY_MASK);
                        }
                }
-               if (!wait_for_completion_timeout
-                   (&xqspi->data_completion, msecs_to_jiffies(1000)))
+               timeout = zynqmp_qspi_timeout(xqspi, op->data.buswidth,
+                                             op->data.nbytes);
+               if (!wait_for_completion_timeout(&xqspi->data_completion, timeout))
                        err = -ETIMEDOUT;
        }
  
@@@ -1224,7 -1242,7 +1242,7 @@@ static int zynqmp_qspi_probe(struct pla
        u32 num_cs;
        const struct qspi_platform_data *p_data;
  
 -      ctlr = spi_alloc_host(&pdev->dev, sizeof(*xqspi));
 +      ctlr = devm_spi_alloc_host(&pdev->dev, sizeof(*xqspi));
        if (!ctlr)
                return -ENOMEM;
  
                xqspi->has_tapdelay = true;
  
        xqspi->regs = devm_platform_ioremap_resource(pdev, 0);
 -      if (IS_ERR(xqspi->regs)) {
 -              ret = PTR_ERR(xqspi->regs);
 -              goto remove_ctlr;
 -      }
 +      if (IS_ERR(xqspi->regs))
 +              return PTR_ERR(xqspi->regs);
  
        xqspi->pclk = devm_clk_get(&pdev->dev, "pclk");
 -      if (IS_ERR(xqspi->pclk)) {
 -              dev_err(dev, "pclk clock not found.\n");
 -              ret = PTR_ERR(xqspi->pclk);
 -              goto remove_ctlr;
 -      }
 +      if (IS_ERR(xqspi->pclk))
 +              return dev_err_probe(dev, PTR_ERR(xqspi->pclk),
 +                                   "pclk clock not found.\n");
  
        xqspi->refclk = devm_clk_get(&pdev->dev, "ref_clk");
 -      if (IS_ERR(xqspi->refclk)) {
 -              dev_err(dev, "ref_clk clock not found.\n");
 -              ret = PTR_ERR(xqspi->refclk);
 -              goto remove_ctlr;
 -      }
 +      if (IS_ERR(xqspi->refclk))
 +              return dev_err_probe(dev, PTR_ERR(xqspi->refclk),
 +                                   "ref_clk clock not found.\n");
  
        ret = clk_prepare_enable(xqspi->pclk);
 -      if (ret) {
 -              dev_err(dev, "Unable to enable APB clock.\n");
 -              goto remove_ctlr;
 -      }
 +      if (ret)
 +              return dev_err_probe(dev, ret, "Unable to enable APB clock.\n");
  
        ret = clk_prepare_enable(xqspi->refclk);
        if (ret) {
@@@ -1338,6 -1364,8 +1356,6 @@@ clk_dis_all
        clk_disable_unprepare(xqspi->refclk);
  clk_dis_pclk:
        clk_disable_unprepare(xqspi->pclk);
 -remove_ctlr:
 -      spi_controller_put(ctlr);
  
        return ret;
  }
diff --combined drivers/spi/spidev.c
index d5dbd1a88af99c744f82036ae27c4cc3017f69d8,face93a9cf203569295e025c3aee378eeaafa715..5539c5d139d489b47c8537118849455d18b710af
@@@ -666,7 -666,7 +666,7 @@@ static int spidev_release(struct inode 
        }
  #ifdef CONFIG_SPI_SLAVE
        if (!dofree)
 -              spi_slave_abort(spidev->spi);
 +              spi_target_abort(spidev->spi);
  #endif
        mutex_unlock(&device_list_lock);
  
@@@ -700,7 -700,9 +700,9 @@@ static const struct class spidev_class 
  };
  
  static const struct spi_device_id spidev_spi_ids[] = {
+       { .name = "bh2228fv" },
        { .name = "dh2228fv" },
+       { .name = "jg10309-01" },
        { .name = "ltc2488" },
        { .name = "sx1301" },
        { .name = "bk4" },
This page took 0.178566 seconds and 4 git commands to generate.