lkml.org 
[lkml]   [2017]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 066/148] ARM: OMAP2+: gpmc-onenand: propagate error on initialization failure
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Ladislav Michl <ladis@linux-mips.org>


    [ Upstream commit 7807e086a2d1f69cc1a57958cac04fea79fc2112 ]

    gpmc_probe_onenand_child returns success even on gpmc_onenand_init
    failure. Fix that.

    Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
    Acked-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    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(-)

    --- 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 __iom
    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_onena
    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;
    }
    --- a/drivers/memory/omap-gpmc.c
    +++ b/drivers/memory/omap-gpmc.c
    @@ -1947,9 +1947,7 @@ static int gpmc_probe_onenand_child(stru
    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,
    --- a/include/linux/omap-gpmc.h
    +++ b/include/linux/omap-gpmc.h
    @@ -88,10 +88,11 @@ static inline int gpmc_nand_init(struct
    #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

    \
     
     \ /
      Last update: 2017-12-12 13:58    [W:4.036 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site