diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-10-07 09:43:11 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-10-07 09:43:11 +0200 |
commit | d4f8f217b8a5d5bd02af979650418dca4caec472 (patch) | |
tree | af047bfa9729c975e24cb7624107574e884d3a57 /drivers/gpio/sx150x.c | |
parent | 2dfbf4dfbe47a484bae20456c12b40763b9b6af7 (diff) | |
parent | 773e3f93577ffb493fb7c39b1a6ecf39b5748e87 (diff) |
Merge branch 'rcu/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu into core/rcu
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); |