Commit f9535999 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull spi fixes from Mark Brown:
 "A few small driver specific fixes (including some of the widespread
  work on fixing missing ID tables for module autoloading and the revert
  of some problematic PM work in spi-rockchip), some improvements to the
  MAINTAINERS information for the NXP drivers and the addition of a new
  device ID to spidev"

* tag 'spi-fix-v6.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
  MAINTAINERS: SPI: Add mailing list imx@lists.linux.dev for nxp spi drivers
  MAINTAINERS: SPI: Add freescale lpspi maintainer information
  spi: spi-fsl-lpspi: Fix off-by-one in prescale max
  spi: spidev: Add missing spi_device_id for jg10309-01
  spi: bcm63xx: Enable module autoloading
  spi: intel: Add check devm_kasprintf() returned value
  spi: spidev: Add an entry for elgin,jg10309-01
  spi: rockchip: Resolve unbalanced runtime PM / system PM handling
parents 2a660447 c9ca76e8
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -8864,6 +8864,7 @@ F: drivers/dma/fsldma.*
FREESCALE DSPI DRIVER
M:	Vladimir Oltean <olteanv@gmail.com>
L:	linux-spi@vger.kernel.org
L:	imx@lists.linux.dev
S:	Maintained
F:	Documentation/devicetree/bindings/spi/fsl,dspi*.yaml
F:	drivers/spi/spi-fsl-dspi.c
@@ -8948,6 +8949,14 @@ S: Maintained
F:	Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.yaml
F:	drivers/i2c/busses/i2c-imx-lpi2c.c
FREESCALE IMX LPSPI DRIVER
M:	Frank Li <Frank.Li@nxp.com>
L:	linux-spi@vger.kernel.org
L:	imx@lists.linux.dev
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 <chris.packham@alliedtelesis.co.nz>
L:	linux-i2c@vger.kernel.org
@@ -8984,6 +8993,7 @@ F: include/linux/fsl/ptp_qoriq.h
FREESCALE QUAD SPI DRIVER
M:	Han Xu <han.xu@nxp.com>
L:	linux-spi@vger.kernel.org
L:	imx@lists.linux.dev
S:	Maintained
F:	Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml
F:	drivers/spi/spi-fsl-qspi.c
@@ -16408,6 +16418,7 @@ M: Han Xu <han.xu@nxp.com>
M:	Haibo Chen <haibo.chen@nxp.com>
R:	Yogesh Gaur <yogeshgaur.83@gmail.com>
L:	linux-spi@vger.kernel.org
L:	imx@lists.linux.dev
S:	Maintained
F:	Documentation/devicetree/bindings/spi/spi-nxp-fspi.yaml
F:	drivers/spi/spi-nxp-fspi.c
+1 −0
Original line number Diff line number Diff line
@@ -472,6 +472,7 @@ static const struct of_device_id bcm63xx_spi_of_match[] = {
	{ .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)
{
+2 −2
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ static struct fsl_lpspi_devtype_data imx93_lpspi_devtype_data = {
};

static struct fsl_lpspi_devtype_data imx7ulp_lpspi_devtype_data = {
	.prescale_max = 8,
	.prescale_max = 7,
};

static const struct of_device_id fsl_lpspi_dt_ids[] = {
@@ -336,7 +336,7 @@ static int fsl_lpspi_set_bitrate(struct fsl_lpspi_data *fsl_lpspi)

	div = DIV_ROUND_UP(perclk_rate, config.speed_hz);

	for (prescale = 0; prescale < prescale_max; prescale++) {
	for (prescale = 0; prescale <= prescale_max; prescale++) {
		scldiv = div / (1 << prescale) - 2;
		if (scldiv < 256) {
			fsl_lpspi->config.prescale = prescale;
+3 −0
Original line number Diff line number Diff line
@@ -1390,6 +1390,9 @@ static int intel_spi_populate_chip(struct intel_spi *ispi)

	pdata->name = devm_kasprintf(ispi->dev, GFP_KERNEL, "%s-chip1",
				     dev_name(ispi->dev));
	if (!pdata->name)
		return -ENOMEM;

	pdata->nr_parts = 1;
	parts = devm_kcalloc(ispi->dev, pdata->nr_parts, sizeof(*parts),
			     GFP_KERNEL);
+7 −16
Original line number Diff line number Diff line
@@ -945,14 +945,16 @@ static int rockchip_spi_suspend(struct device *dev)
{
	int ret;
	struct spi_controller *ctlr = dev_get_drvdata(dev);
	struct rockchip_spi *rs = spi_controller_get_devdata(ctlr);

	ret = spi_controller_suspend(ctlr);
	if (ret < 0)
		return ret;

	clk_disable_unprepare(rs->spiclk);
	clk_disable_unprepare(rs->apb_pclk);
	ret = pm_runtime_force_suspend(dev);
	if (ret < 0) {
		spi_controller_resume(ctlr);
		return ret;
	}

	pinctrl_pm_select_sleep_state(dev);

@@ -963,25 +965,14 @@ static int rockchip_spi_resume(struct device *dev)
{
	int ret;
	struct spi_controller *ctlr = dev_get_drvdata(dev);
	struct rockchip_spi *rs = spi_controller_get_devdata(ctlr);

	pinctrl_pm_select_default_state(dev);

	ret = clk_prepare_enable(rs->apb_pclk);
	ret = pm_runtime_force_resume(dev);
	if (ret < 0)
		return ret;

	ret = clk_prepare_enable(rs->spiclk);
	if (ret < 0)
		clk_disable_unprepare(rs->apb_pclk);

	ret = spi_controller_resume(ctlr);
	if (ret < 0) {
		clk_disable_unprepare(rs->spiclk);
		clk_disable_unprepare(rs->apb_pclk);
	}

	return 0;
	return spi_controller_resume(ctlr);
}
#endif /* CONFIG_PM_SLEEP */

Loading