lkml.org 
[lkml]   [2011]   [Jan]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 3/3] ECI: adding platform data for ECI driver
    Date
    From: Tapio Vihuri <tapio.vihuri@nokia.com>

    Gives platform data for ECI accessory input driver and
    ECI controller driver.

    Signed-off-by: Tapio Vihuri <tapio.vihuri@nokia.com>
    ---
    arch/x86/platform/mrst/mrst.c | 48 +++++++++++++++++++++++++++++++++++++++++
    1 files changed, 48 insertions(+), 0 deletions(-)

    diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c
    index ea6529e..8189029 100644
    --- a/arch/x86/platform/mrst/mrst.c
    +++ b/arch/x86/platform/mrst/mrst.c
    @@ -24,6 +24,7 @@
    #include <linux/platform_device.h>
    #include <linux/irq.h>
    #include <linux/module.h>
    +#include <linux/input/eci.h>

    #include <asm/setup.h>
    #include <asm/mpspec_def.h>
    @@ -478,6 +479,16 @@ static void __init *no_platform_data(void *info)
    return NULL;
    }

    +static void *eci_ctrl_platform_data_init(void *info)
    +{
    + static struct eci_ctrl_platform_data mrst_eci_ctrl_data = {
    + .eci_ctrl_rst_gpio = GPIO_ECI_RSTn,
    + .eci_ctrl_sw_ctrl_gpio = GPIO_ECI_SW_CTRL,
    + .eci_ctrl_int_gpio = GPIO_ECI_INT,
    + };
    + return &mrst_eci_ctrl_data;
    +}
    +
    static const struct devs_id __initconst device_ids[] = {
    {"pmic_gpio", SFI_DEV_TYPE_SPI, 1, &pmic_gpio_platform_data},
    {"spi_max3111", SFI_DEV_TYPE_SPI, 0, &max3111_platform_data},
    @@ -487,6 +498,7 @@ static const struct devs_id __initconst device_ids[] = {
    {"i2c_accel", SFI_DEV_TYPE_I2C, 0, &lis331dl_platform_data},
    {"pmic_audio", SFI_DEV_TYPE_IPC, 1, &no_platform_data},
    {"msic_audio", SFI_DEV_TYPE_IPC, 1, &no_platform_data},
    + {"eci_ctrl", SFI_DEV_TYPE_I2C, 0, &eci_ctrl_platform_data_init},
    {},
    };

    @@ -659,6 +671,42 @@ static void __init sfi_handle_i2c_dev(int bus, struct i2c_board_info *i2c_info)
    i2c_register_board_info(bus, i2c_info, 1);
    }

    +/*
    + * This is just example, should be used in platform audio driver
    + * hsmic_event->event(hsmic_event->private, true)
    + */
    +static void mrst_register_hsmic_event_cb(struct audio_hsmic_event *event)
    +{
    + struct audio_hsmic_event *hsmic_event;
    +
    + hsmic_event = event;
    +}
    +
    +static struct eci_platform_data mrst_eci_data = {
    + .register_hsmic_event_cb = mrst_register_hsmic_event_cb,
    +};
    +
    +static struct platform_device mrst_eci_device = {
    + .name = "ECI_accessory",
    + .dev = {
    + .platform_data = &mrst_eci_data,
    + },
    +};
    +
    +static int __init mrst_eci_init(void)
    +{
    + int retval;
    +
    + retval = platform_device_register(&mrst_eci_device);
    + if (retval < 0)
    + return retval;
    +
    + /* Turn on vprog2 */
    + intel_scu_ipc_iowrite8(AvP_MSIC_VPROG2, AvP_MSIC_VPROG2_2V5_ON);
    +
    + return retval;
    +}
    +device_initcall(mrst_eci_init);

    static int __init sfi_parse_devs(struct sfi_table_header *table)
    {
    --
    1.6.5


    \
     
     \ /
      Last update: 2011-01-31 15:07    [W:0.053 / U:0.636 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site