Linux SPI Master驅動

問題

接手一個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官方也已經做出了修正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章