spi: Fixes for v5.19
A few driver specific fixes, none especially remarkable, plus a MAINTAINERS file update due to the previous maintainer for the NXP FSPI driver having left the company. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmLRbBsACgkQJNaLcl1U h9AA9gf+OAayfRZrVvtaSq5024SUYym6YDRHmdUJD1Emh5VbuVHcqHZC70gdXhNu hHSmZti5mTHbo9fvSBiuGS9MDoxBmbFsdZ4mUwE8sKYW5vnmRlaq7cnjTNWDISwp CXNyUjJdgFuZWjNFlWDodNeuDMAdR2pDgOfKBwWyiCEVvypQuGq7Cp7yFud/eyvA eUfSYDOoI/Ws5t1XKFf8M9YBp6yaspJ9cNLFPtVIGtDTkT9SdkjqwXCWy+iDNHhi Nj3mciV6RA9iCi9ICr68rPsak/RxCbwOfBigFuShOc0oiQ2fhrKtVNRZuYs5/UxH CdMmk8sCfMyZE6HO/UUcbw/LyDKoVQ== =PphO -----END PGP SIGNATURE----- Merge tag 'spi-fix-v5.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi Pull spi fixes from Mark Brown: "A few driver specific fixes, none especially remarkable, plus a MAINTAINERS file update due to the previous maintainer for the NXP FSPI driver having left the company" * tag 'spi-fix-v5.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: spi: cadence-quadspi: Remove spi_master_put() in probe failure path MAINTAINERS: change the NXP FSPI driver maintainer. spi: amd: Limit max transfer and message size spi: aspeed: Fix division by zero spi: aspeed: Add dev_dbg() to dump the spi-mem direct mapping descriptor
This commit is contained in:
commit
8006112d6c
@ -14362,7 +14362,8 @@ S: Maintained
|
||||
F: drivers/net/phy/nxp-c45-tja11xx.c
|
||||
|
||||
NXP FSPI DRIVER
|
||||
M: Ashish Kumar <ashish.kumar@nxp.com>
|
||||
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
|
||||
S: Maintained
|
||||
|
@ -33,6 +33,7 @@
|
||||
#define AMD_SPI_RX_COUNT_REG 0x4B
|
||||
#define AMD_SPI_STATUS_REG 0x4C
|
||||
|
||||
#define AMD_SPI_FIFO_SIZE 70
|
||||
#define AMD_SPI_MEM_SIZE 200
|
||||
|
||||
/* M_CMD OP codes for SPI */
|
||||
@ -270,6 +271,11 @@ static int amd_spi_master_transfer(struct spi_master *master,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static size_t amd_spi_max_transfer_size(struct spi_device *spi)
|
||||
{
|
||||
return AMD_SPI_FIFO_SIZE;
|
||||
}
|
||||
|
||||
static int amd_spi_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
@ -302,6 +308,8 @@ static int amd_spi_probe(struct platform_device *pdev)
|
||||
master->flags = SPI_MASTER_HALF_DUPLEX;
|
||||
master->setup = amd_spi_master_setup;
|
||||
master->transfer_one_message = amd_spi_master_transfer;
|
||||
master->max_transfer_size = amd_spi_max_transfer_size;
|
||||
master->max_message_size = amd_spi_max_transfer_size;
|
||||
|
||||
/* Register the controller with SPI framework */
|
||||
err = devm_spi_register_master(dev, master);
|
||||
|
@ -558,6 +558,14 @@ static int aspeed_spi_dirmap_create(struct spi_mem_dirmap_desc *desc)
|
||||
u32 ctl_val;
|
||||
int ret = 0;
|
||||
|
||||
dev_dbg(aspi->dev,
|
||||
"CE%d %s dirmap [ 0x%.8llx - 0x%.8llx ] OP %#x mode:%d.%d.%d.%d naddr:%#x ndummies:%#x\n",
|
||||
chip->cs, op->data.dir == SPI_MEM_DATA_IN ? "read" : "write",
|
||||
desc->info.offset, desc->info.offset + desc->info.length,
|
||||
op->cmd.opcode, op->cmd.buswidth, op->addr.buswidth,
|
||||
op->dummy.buswidth, op->data.buswidth,
|
||||
op->addr.nbytes, op->dummy.nbytes);
|
||||
|
||||
chip->clk_freq = desc->mem->spi->max_speed_hz;
|
||||
|
||||
/* Only for reads */
|
||||
@ -574,9 +582,11 @@ static int aspeed_spi_dirmap_create(struct spi_mem_dirmap_desc *desc)
|
||||
ctl_val = readl(chip->ctl) & ~CTRL_IO_CMD_MASK;
|
||||
ctl_val |= aspeed_spi_get_io_mode(op) |
|
||||
op->cmd.opcode << CTRL_COMMAND_SHIFT |
|
||||
CTRL_IO_DUMMY_SET(op->dummy.nbytes / op->dummy.buswidth) |
|
||||
CTRL_IO_MODE_READ;
|
||||
|
||||
if (op->dummy.nbytes)
|
||||
ctl_val |= CTRL_IO_DUMMY_SET(op->dummy.nbytes / op->dummy.buswidth);
|
||||
|
||||
/* Tune 4BYTE address mode */
|
||||
if (op->addr.nbytes) {
|
||||
u32 addr_mode = readl(aspi->regs + CE_CTRL_REG);
|
||||
|
@ -1578,8 +1578,7 @@ static int cqspi_probe(struct platform_device *pdev)
|
||||
ret = cqspi_of_get_pdata(cqspi);
|
||||
if (ret) {
|
||||
dev_err(dev, "Cannot get mandatory OF data.\n");
|
||||
ret = -ENODEV;
|
||||
goto probe_master_put;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Obtain QSPI clock. */
|
||||
@ -1587,7 +1586,7 @@ static int cqspi_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(cqspi->clk)) {
|
||||
dev_err(dev, "Cannot claim QSPI clock.\n");
|
||||
ret = PTR_ERR(cqspi->clk);
|
||||
goto probe_master_put;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Obtain and remap controller address. */
|
||||
@ -1596,7 +1595,7 @@ static int cqspi_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(cqspi->iobase)) {
|
||||
dev_err(dev, "Cannot remap controller address.\n");
|
||||
ret = PTR_ERR(cqspi->iobase);
|
||||
goto probe_master_put;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Obtain and remap AHB address. */
|
||||
@ -1605,7 +1604,7 @@ static int cqspi_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(cqspi->ahb_base)) {
|
||||
dev_err(dev, "Cannot remap AHB address.\n");
|
||||
ret = PTR_ERR(cqspi->ahb_base);
|
||||
goto probe_master_put;
|
||||
return ret;
|
||||
}
|
||||
cqspi->mmap_phys_base = (dma_addr_t)res_ahb->start;
|
||||
cqspi->ahb_size = resource_size(res_ahb);
|
||||
@ -1614,15 +1613,13 @@ static int cqspi_probe(struct platform_device *pdev)
|
||||
|
||||
/* Obtain IRQ line. */
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
if (irq < 0) {
|
||||
ret = -ENXIO;
|
||||
goto probe_master_put;
|
||||
}
|
||||
if (irq < 0)
|
||||
return -ENXIO;
|
||||
|
||||
pm_runtime_enable(dev);
|
||||
ret = pm_runtime_resume_and_get(dev);
|
||||
if (ret < 0)
|
||||
goto probe_master_put;
|
||||
return ret;
|
||||
|
||||
ret = clk_prepare_enable(cqspi->clk);
|
||||
if (ret) {
|
||||
@ -1716,8 +1713,6 @@ probe_reset_failed:
|
||||
probe_clk_failed:
|
||||
pm_runtime_put_sync(dev);
|
||||
pm_runtime_disable(dev);
|
||||
probe_master_put:
|
||||
spi_master_put(master);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user