lkml.org 
[lkml]   [2008]   [Oct]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 11/13] mfd: Add initialisation callback for WM8350
    Date
    Some functions of the WM8350 require board-specific initialisation on
    startup. Provide a callback to the WM8350 driver in platform data
    for platforms to use to configure the chip. Use of a callback allows
    platforms to control the ordering of initialisation which can be
    important.

    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    ---
    drivers/mfd/wm8350-core.c | 12 +++++++++++-
    drivers/mfd/wm8350-i2c.c | 2 +-
    include/linux/mfd/wm8350/core.h | 14 +++++++++++++-
    3 files changed, 25 insertions(+), 3 deletions(-)

    diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c
    index c7552c0..071834b 100644
    --- a/drivers/mfd/wm8350-core.c
    +++ b/drivers/mfd/wm8350-core.c
    @@ -388,7 +388,8 @@ out:
    }
    EXPORT_SYMBOL_GPL(wm8350_create_cache);

    -int wm8350_device_init(struct wm8350 *wm8350)
    +int wm8350_device_init(struct wm8350 *wm8350,
    + struct wm8350_platform_data *pdata)
    {
    int ret = -EINVAL;
    u16 id1, id2, mask, mode;
    @@ -439,6 +440,15 @@ int wm8350_device_init(struct wm8350 *wm8350)
    return ret;
    }

    + if (pdata->init) {
    + ret = pdata->init(wm8350);
    + if (ret != 0) {
    + dev_err(wm8350->dev, "Platform init() failed: %d\n",
    + ret);
    + goto err;
    + }
    + }
    +
    return 0;

    err:
    diff --git a/drivers/mfd/wm8350-i2c.c b/drivers/mfd/wm8350-i2c.c
    index 2b0569c..245b790 100644
    --- a/drivers/mfd/wm8350-i2c.c
    +++ b/drivers/mfd/wm8350-i2c.c
    @@ -65,7 +65,7 @@ static int wm8350_i2c_probe(struct i2c_client *i2c,
    wm8350->read_dev = wm8350_i2c_read_device;
    wm8350->write_dev = wm8350_i2c_write_device;

    - ret = wm8350_device_init(wm8350);
    + ret = wm8350_device_init(wm8350, i2c->dev.platform_data);
    if (ret < 0)
    goto err;

    diff --git a/include/linux/mfd/wm8350/core.h b/include/linux/mfd/wm8350/core.h
    index 94778c1..8f2beae 100644
    --- a/include/linux/mfd/wm8350/core.h
    +++ b/include/linux/mfd/wm8350/core.h
    @@ -564,10 +564,22 @@ struct wm8350 {
    u16 *reg_cache;
    };

    +/**
    + * Data to be supplied by the platform to initialise the WM8350.
    + *
    + * @init: Function called during driver initialisation. Should be
    + * used by the platform to configure GPIO functions and similar.
    + */
    +struct wm8350_platform_data {
    + int (*init)(struct wm8350 *wm8350);
    +};
    +
    +
    /*
    * WM8350 device initialisation and exit.
    */
    -int wm8350_device_init(struct wm8350 *wm8350);
    +int wm8350_device_init(struct wm8350 *wm8350,
    + struct wm8350_platform_data *pdata);
    void wm8350_device_exit(struct wm8350 *wm8350);

    /*
    --
    1.5.6.5


    \
     
     \ /
      Last update: 2008-10-06 14:41    [W:0.045 / U:0.584 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site