Commit 9d6105e19f617406aea46dd19281080c7c5ae0d8
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
drivers/mfd/rk808.c
... | ... | @@ -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: |