On 11/02/17 15:02, Ladislav Michl wrote: > gpmc_probe_onenand_child returns success even on gpmc_onenand_init > failure. Fix that. > > Signed-off-by: Ladislav Michl <ladis@xxxxxxxxxxxxxx> Acked-by: Roger Quadros <rogerq@xxxxxx> -- cheers, -roger > --- > arch/arm/mach-omap2/gpmc-onenand.c | 10 ++++++---- > drivers/memory/omap-gpmc.c | 4 +--- > include/linux/omap-gpmc.h | 5 +++-- > 3 files changed, 10 insertions(+), 9 deletions(-) > > diff --git a/arch/arm/mach-omap2/gpmc-onenand.c b/arch/arm/mach-omap2/gpmc-onenand.c > index 8633c703546a..2944af820558 100644 > --- a/arch/arm/mach-omap2/gpmc-onenand.c > +++ b/arch/arm/mach-omap2/gpmc-onenand.c > @@ -367,7 +367,7 @@ static int gpmc_onenand_setup(void __iomem *onenand_base, int *freq_ptr) > return ret; > } > > -void gpmc_onenand_init(struct omap_onenand_platform_data *_onenand_data) > +int gpmc_onenand_init(struct omap_onenand_platform_data *_onenand_data) > { > int err; > struct device *dev = &gpmc_onenand_device.dev; > @@ -393,15 +393,17 @@ void gpmc_onenand_init(struct omap_onenand_platform_data *_onenand_data) > if (err < 0) { > dev_err(dev, "Cannot request GPMC CS %d, error %d\n", > gpmc_onenand_data->cs, err); > - return; > + return err; > } > > gpmc_onenand_resource.end = gpmc_onenand_resource.start + > ONENAND_IO_SIZE - 1; > > - if (platform_device_register(&gpmc_onenand_device) < 0) { > + err = platform_device_register(&gpmc_onenand_device); > + if (err) { > dev_err(dev, "Unable to register OneNAND device\n"); > gpmc_cs_free(gpmc_onenand_data->cs); > - return; > } > + > + return err; > } > diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c > index 5457c361ad58..bf0fe0137dfe 100644 > --- a/drivers/memory/omap-gpmc.c > +++ b/drivers/memory/omap-gpmc.c > @@ -1947,9 +1947,7 @@ static int gpmc_probe_onenand_child(struct platform_device *pdev, > if (!of_property_read_u32(child, "dma-channel", &val)) > gpmc_onenand_data->dma_channel = val; > > - gpmc_onenand_init(gpmc_onenand_data); > - > - return 0; > + return gpmc_onenand_init(gpmc_onenand_data); > } > #else > static int gpmc_probe_onenand_child(struct platform_device *pdev, > diff --git a/include/linux/omap-gpmc.h b/include/linux/omap-gpmc.h > index 35d0fd7a4948..e821a3132a3e 100644 > --- a/include/linux/omap-gpmc.h > +++ b/include/linux/omap-gpmc.h > @@ -88,10 +88,11 @@ static inline int gpmc_nand_init(struct omap_nand_platform_data *d, > #endif > > #if IS_ENABLED(CONFIG_MTD_ONENAND_OMAP2) > -extern void gpmc_onenand_init(struct omap_onenand_platform_data *d); > +extern int gpmc_onenand_init(struct omap_onenand_platform_data *d); > #else > #define board_onenand_data NULL > -static inline void gpmc_onenand_init(struct omap_onenand_platform_data *d) > +static inline int gpmc_onenand_init(struct omap_onenand_platform_data *d) > { > + return 0; > } > #endif > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html