diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-10-13 15:44:24 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-10-13 15:44:24 +0200 |
commit | 3d8a1a6a8af910cc2da566080d111e062a124ba6 (patch) | |
tree | 0c78b30a5c7aa083e215222989f982313c5141c0 /drivers/gpio/sx150x.c | |
parent | 1b13fe6a6e9986dbc079cbb05090be75edbffa5d (diff) | |
parent | 5d0d71569e671239ae0d905ced9b65cd843f99ee (diff) |
Merge branch 'amd-iommu/2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu
Diffstat (limited to 'drivers/gpio/sx150x.c')
-rw-r--r-- | drivers/gpio/sx150x.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/drivers/gpio/sx150x.c b/drivers/gpio/sx150x.c index b42f42ca70c..823559ab0e2 100644 --- a/drivers/gpio/sx150x.c +++ b/drivers/gpio/sx150x.c @@ -459,17 +459,33 @@ static int sx150x_init_io(struct sx150x_chip *chip, u8 base, u16 cfg) return err; } -static int sx150x_init_hw(struct sx150x_chip *chip, - struct sx150x_platform_data *pdata) +static int sx150x_reset(struct sx150x_chip *chip) { - int err = 0; + int err; - err = i2c_smbus_write_word_data(chip->client, + err = i2c_smbus_write_byte_data(chip->client, chip->dev_cfg->reg_reset, - 0x3412); + 0x12); if (err < 0) return err; + err = i2c_smbus_write_byte_data(chip->client, + chip->dev_cfg->reg_reset, + 0x34); + return err; +} + +static int sx150x_init_hw(struct sx150x_chip *chip, + struct sx150x_platform_data *pdata) +{ + int err = 0; + + if (pdata->reset_during_probe) { + err = sx150x_reset(chip); + if (err < 0) + return err; + } + err = sx150x_i2c_write(chip->client, chip->dev_cfg->reg_misc, 0x01); |