Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 176039
b: refs/heads/master
c: b4ead61
h: refs/heads/master
i:
  176037: 32d77f4
  176035: 7f17904
  176031: 39314a9
v: v3
  • Loading branch information
Amit Kucheria authored and Samuel Ortiz committed Dec 13, 2009
1 parent 6de72e6 commit 0d9c0ae
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 890463f0ff2bc5c62470dba181a5362bf7a5b22e
refs/heads/master: b4ead61e570d7b7bcf20a5a1733dd0bc37236c99
36 changes: 36 additions & 0 deletions trunk/drivers/mfd/twl4030-power.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ static u8 twl4030_start_script_address = 0x2b;
*/
#define DEV_GRP_OFFSET 0
#define TYPE_OFFSET 1
#define REMAP_OFFSET 2
#define DEDICATED_OFFSET 3

/* Bit positions in the registers */

Expand All @@ -88,6 +90,12 @@ static u8 twl4030_start_script_address = 0x2b;
#define TYPE2_SHIFT 3
#define TYPE2_MASK (3 << TYPE2_SHIFT)

/* <RESOURCE>_REMAP */
#define SLEEP_STATE_SHIFT 0
#define SLEEP_STATE_MASK (0xf << SLEEP_STATE_SHIFT)
#define OFF_STATE_SHIFT 4
#define OFF_STATE_MASK (0xf << OFF_STATE_SHIFT)

static u8 res_config_addrs[] = {
[RES_VAUX1] = 0x17,
[RES_VAUX2] = 0x1b,
Expand Down Expand Up @@ -325,6 +333,7 @@ static int __init twl4030_configure_resource(struct twl4030_resconfig *rconfig)
int err;
u8 type;
u8 grp;
u8 remap;

if (rconfig->resource > TOTAL_RESOURCES) {
pr_err("TWL4030 Resource %d does not exist\n",
Expand Down Expand Up @@ -380,6 +389,33 @@ static int __init twl4030_configure_resource(struct twl4030_resconfig *rconfig)
return err;
}

/* Set remap states */
err = twl4030_i2c_read_u8(TWL4030_MODULE_PM_RECEIVER, &remap,
rconfig_addr + REMAP_OFFSET);
if (err < 0) {
pr_err("TWL4030 Resource %d remap could not be read\n",
rconfig->resource);
return err;
}

if (rconfig->remap_off >= 0) {
remap &= ~OFF_STATE_MASK;
remap |= rconfig->remap_off << OFF_STATE_SHIFT;
}

if (rconfig->remap_sleep >= 0) {
remap &= ~SLEEP_STATE_MASK;
remap |= rconfig->remap_off << SLEEP_STATE_SHIFT;
}

err = twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
remap,
rconfig_addr + REMAP_OFFSET);
if (err < 0) {
pr_err("TWL4030 failed to program remap\n");
return err;
}

return 0;
}

Expand Down
3 changes: 3 additions & 0 deletions trunk/include/linux/i2c/twl4030.h
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ int twl4030_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes);

#define RES_TYPE_ALL 0x7

/* Resource states */
#define RES_STATE_WRST 0xF
#define RES_STATE_ACTIVE 0xE
#define RES_STATE_SLEEP 0x8
Expand Down Expand Up @@ -391,6 +392,8 @@ struct twl4030_resconfig {
u8 devgroup; /* Processor group that Power resource belongs to */
u8 type; /* Power resource addressed, 6 / broadcast message */
u8 type2; /* Power resource addressed, 3 / broadcast message */
u8 remap_off; /* off state remapping */
u8 remap_sleep; /* sleep state remapping */
};

struct twl4030_power_data {
Expand Down

0 comments on commit 0d9c0ae

Please sign in to comment.