On Wed, Sep 06, 2017 at 02:10:44PM +0800, Baolin Wang wrote: This looks like a nice, clean driver. A few fairly small issues though: > +config SPI_SPRD_ADI > + tristate "Spreadtrum ADI controller" > + depends on ARCH_SPRD > + help > + ADI driver based on SPI for Spreadtrum SoCs. > + I can't see any hard dependencies on the architecture - can you add an || COMPILE_TEST for more coverage? > + ret = devm_spi_register_controller(&pdev->dev, ctlr); > + if (ret) { > + dev_err(&pdev->dev, "failed to register SPI controller\n"); > + goto free_hwlock; > + } > + spi_controller_put(ctlr); You used devm_ to register the controller, no need to free it explicitly. > +static int __init sprd_adi_init(void) > +{ > + return platform_driver_register(&sprd_adi_driver); > +} > +subsys_initcall(sprd_adi_init); Why is this subsys_initcall() and not module_platform_driver()?