問題
接手一個zynqmp項目,petalinux2017.2的代碼,spi-nor報錯xilinx_spi 87000000.axi_quad_spi: can't setup spi1.0, status -13
,定位代碼,
//drivers\spi\spi-xilinx.c 809
ret = spi_register_master(master);
if (ret) {
dev_err(&pdev->dev, "spi_register_master failed\n");
goto clk_unprepare_all;
}
//drivers\spi\spi.c 2182
of_register_spi_devices(ctlr);
//drivers\spi\spi.c 1682
spi = of_register_spi_device(ctlr, nc);
//drivers\spi\spi.c
rc = spi_add_device(spi);
if (rc) {
dev_err(&ctlr->dev, "spi_device register error %pOF\n", nc);
goto err_of_node_put;
}
//drivers\spi\spi.c 544
status = spi_setup(spi);
if (status < 0) {
dev_err(dev, "can't setup %s, status %d\n",
dev_name(&spi->dev), status);
goto done;
}
//drivers\spi\spi.c 2761
if (spi->controller->setup)
status = spi->controller->setup(spi);
//drivers\spi\spi-xilinx.c 378
static int xspi_setup(struct spi_device *qspi)
{
int ret;
struct xilinx_spi *xqspi = spi_master_get_devdata(qspi->master);
if (qspi->master->busy)
return -EBUSY;
ret = pm_runtime_get_sync(xqspi->dev);
if (ret < 0)
return ret;
ret = xspi_setup_transfer(qspi, NULL);
pm_runtime_put_sync(xqspi->dev);
return ret;
}
定位到代碼pm_runtime_get_sync
的參數xqspi->dev
錯誤,上面列出的代碼是已經修正的版本,這個問題Xilinx官方也已經做出了修正。