Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 329983
b: refs/heads/master
c: 5cbe786
h: refs/heads/master
i:
  329981: 62da004
  329979: 90ff909
  329975: a0cf7b0
  329967: 11693b8
  329951: 3276099
  329919: c6b6a50
  329855: abc1142
  329727: aff1d70
v: v3
  • Loading branch information
Peter Ujfalusi authored and Samuel Ortiz committed Sep 19, 2012
1 parent 4549931 commit 8aff929
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 35736dce6c05bab8e8b1eb7c74f5b8b0fbb7886d
refs/heads/master: 5cbe786a6e32e80149f7b29def50b2bf563f6628
9 changes: 6 additions & 3 deletions trunk/Documentation/devicetree/bindings/mfd/twl6040.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Texas Instruments TWL6040 family

The TWL6040s are 8-channel high quality low-power audio codecs providing audio
and vibra functionality on OMAP4+ platforms.
The TWL6040s are 8-channel high quality low-power audio codecs providing audio,
vibra and GPO functionality on OMAP4+ platforms.
They are connected ot the host processor via i2c for commands, McPDM for audio
data and commands.

Expand All @@ -10,6 +10,8 @@ Required properties:
- reg: must be 0x4b for i2c address
- interrupts: twl6040 has one interrupt line connecteded to the main SoC
- interrupt-parent: The parent interrupt controller
- gpio-controller:
- #gpio-cells = <1>: twl6040 provides GPO lines.
- twl6040,audpwron-gpio: Power on GPIO line for the twl6040

- vio-supply: Regulator for the twl6040 VIO supply
Expand Down Expand Up @@ -37,7 +39,6 @@ Example:
&i2c1 {
twl6040: twl@4b {
compatible = "ti,twl6040";
reg = <0x4b>;

interrupts = <0 119 4>;
interrupt-parent = <&gic>;
Expand All @@ -60,3 +61,5 @@ Example:
};
};
};

/include/ "twl6040.dtsi"
15 changes: 15 additions & 0 deletions trunk/drivers/mfd/twl6040-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,21 @@ static int __devinit twl6040_probe(struct i2c_client *client,
children++;
}

/*
* Enable the GPO driver in the following cases:
* DT booted kernel or legacy boot with valid gpo platform_data
*/
if (!pdata || (pdata && pdata->gpo)) {
cell = &twl6040->cells[children];
cell->name = "twl6040-gpo";

if (pdata) {
cell->platform_data = pdata->gpo;
cell->pdata_size = sizeof(*pdata->gpo);
}
children++;
}

ret = mfd_add_devices(&client->dev, -1, twl6040->cells, children,
NULL, 0, NULL);
if (ret)
Expand Down
9 changes: 8 additions & 1 deletion trunk/include/linux/mfd/twl6040.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@
#define TWL6040_VIBROCDET 0x20
#define TWL6040_TSHUTDET 0x40

#define TWL6040_CELLS 2
#define TWL6040_CELLS 3

#define TWL6040_REV_ES1_0 0x00
#define TWL6040_REV_ES1_1 0x01 /* Rev ES1.1 and ES1.2 */
Expand All @@ -176,6 +176,8 @@
#define TWL6040_SYSCLK_SEL_LPPLL 0
#define TWL6040_SYSCLK_SEL_HPPLL 1

#define TWL6040_GPO_MAX 3

struct twl6040_codec_data {
u16 hs_left_step;
u16 hs_right_step;
Expand All @@ -192,12 +194,17 @@ struct twl6040_vibra_data {
int vddvibr_uV; /* VDDVIBR volt, set 0 for fixed reg */
};

struct twl6040_gpo_data {
int gpio_base;
};

struct twl6040_platform_data {
int audpwron_gpio; /* audio power-on gpio */
unsigned int irq_base;

struct twl6040_codec_data *codec;
struct twl6040_vibra_data *vibra;
struct twl6040_gpo_data *gpo;
};

struct regmap;
Expand Down

0 comments on commit 8aff929

Please sign in to comment.