Commit 9d6105e19f617406aea46dd19281080c7c5ae0d8

Authored by Elaine Zhang
Committed by Lee Jones
1 parent 5771a8c088

mfd: rk808: Fix up the chip id get failed

the rk8xx chip id is:
((MSB << 8) | LSB) & 0xfff0

Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>

Showing 2 changed files with 16 additions and 6 deletions Side-by-side Diff

... ... @@ -325,7 +325,7 @@
325 325 void (*pm_pwroff_fn)(void);
326 326 int nr_pre_init_regs;
327 327 int nr_cells;
328   - int pm_off = 0;
  328 + int pm_off = 0, msb, lsb;
329 329 int ret;
330 330 int i;
331 331  
332 332  
333 333  
... ... @@ -333,14 +333,23 @@
333 333 if (!rk808)
334 334 return -ENOMEM;
335 335  
336   - rk808->variant = i2c_smbus_read_word_data(client, RK808_ID_MSB);
337   - if (rk808->variant < 0) {
338   - dev_err(&client->dev, "Failed to read the chip id at 0x%02x\n",
  336 + /* Read chip variant */
  337 + msb = i2c_smbus_read_byte_data(client, RK808_ID_MSB);
  338 + if (msb < 0) {
  339 + dev_err(&client->dev, "failed to read the chip id at 0x%x\n",
339 340 RK808_ID_MSB);
340   - return rk808->variant;
  341 + return msb;
341 342 }
342 343  
343   - dev_dbg(&client->dev, "Chip id: 0x%x\n", (unsigned int)rk808->variant);
  344 + lsb = i2c_smbus_read_byte_data(client, RK808_ID_LSB);
  345 + if (lsb < 0) {
  346 + dev_err(&client->dev, "failed to read the chip id at 0x%x\n",
  347 + RK808_ID_LSB);
  348 + return lsb;
  349 + }
  350 +
  351 + rk808->variant = ((msb << 8) | lsb) & RK8XX_ID_MSK;
  352 + dev_info(&client->dev, "chip id: 0x%x\n", (unsigned int)rk808->variant);
344 353  
345 354 switch (rk808->variant) {
346 355 case RK808_ID:
include/linux/mfd/rk808.h
... ... @@ -298,6 +298,7 @@
298 298 #define VOUT_LO_INT BIT(0)
299 299 #define CLK32KOUT2_EN BIT(0)
300 300  
  301 +#define RK8XX_ID_MSK 0xfff0
301 302 enum {
302 303 BUCK_ILMIN_50MA,
303 304 BUCK_ILMIN_100MA,