@@ -425,6 +425,7 @@ static void sg2044_spifmc_init(struct sg2044_spifmc *spifmc)
425425
426426static int sg2044_spifmc_probe (struct platform_device * pdev )
427427{
428+ struct device * dev = & pdev -> dev ;
428429 struct spi_controller * ctrl ;
429430 struct sg2044_spifmc * spifmc ;
430431 void __iomem * base ;
@@ -435,13 +436,10 @@ static int sg2044_spifmc_probe(struct platform_device *pdev)
435436 return - ENOMEM ;
436437
437438 spifmc = spi_controller_get_devdata (ctrl );
438- dev_set_drvdata (& pdev -> dev , ctrl );
439439
440440 spifmc -> clk = devm_clk_get_enabled (& pdev -> dev , NULL );
441441 if (IS_ERR (spifmc -> clk ))
442- return dev_err_probe (& pdev -> dev , PTR_ERR (spifmc -> clk ),
443- "%s: Cannot get and enable AHB clock\n" ,
444- __func__ );
442+ return dev_err_probe (dev , PTR_ERR (spifmc -> clk ), "Cannot get and enable AHB clock\n" );
445443
446444 spifmc -> dev = & pdev -> dev ;
447445 spifmc -> ctrl = ctrl ;
@@ -457,28 +455,20 @@ static int sg2044_spifmc_probe(struct platform_device *pdev)
457455 ctrl -> mem_ops = & sg2044_spifmc_mem_ops ;
458456 ctrl -> mode_bits = SPI_RX_DUAL | SPI_TX_DUAL | SPI_RX_QUAD | SPI_TX_QUAD ;
459457
460- mutex_init (& spifmc -> lock );
458+ ret = devm_mutex_init (dev , & spifmc -> lock );
459+ if (ret )
460+ return ret ;
461461
462462 sg2044_spifmc_init (spifmc );
463463 sg2044_spifmc_init_reg (spifmc );
464464
465465 ret = devm_spi_register_controller (& pdev -> dev , ctrl );
466- if (ret ) {
467- mutex_destroy (& spifmc -> lock );
468- dev_err (& pdev -> dev , "spi_register_controller failed\n" );
469- return ret ;
470- }
466+ if (ret )
467+ return dev_err_probe (dev , ret , "spi_register_controller failed\n" );
471468
472469 return 0 ;
473470}
474471
475- static void sg2044_spifmc_remove (struct platform_device * pdev )
476- {
477- struct sg2044_spifmc * spifmc = platform_get_drvdata (pdev );
478-
479- mutex_destroy (& spifmc -> lock );
480- }
481-
482472static const struct of_device_id sg2044_spifmc_match [] = {
483473 { .compatible = "sophgo,sg2044-spifmc-nor" },
484474 { /* sentinel */ }
@@ -491,7 +481,6 @@ static struct platform_driver sg2044_nor_driver = {
491481 .of_match_table = sg2044_spifmc_match ,
492482 },
493483 .probe = sg2044_spifmc_probe ,
494- .remove = sg2044_spifmc_remove ,
495484};
496485module_platform_driver (sg2044_nor_driver );
497486
0 commit comments