Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 226022
b: refs/heads/master
c: 611b759
h: refs/heads/master
v: v3
  • Loading branch information
Sundar Iyer authored and Linus Walleij committed Dec 19, 2010
1 parent ccbc12c commit 3733720
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 6 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: 20406ebff4a298e6e3abbc1717a90bb3e55dc820
refs/heads/master: 611b7590afa6e6c6b0942b1d3efef17fbb348ef5
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-ux500/board-mop500.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ static struct tc3589x_gpio_platform_data mop500_tc35892_gpio_data = {
};

static struct tc3589x_platform_data mop500_tc35892_data = {
.block = TC3589x_BLOCK_GPIO,
.gpio = &mop500_tc35892_gpio_data,
.irq_base = MOP500_EGPIO_IRQ_BASE,
};
Expand Down
28 changes: 23 additions & 5 deletions trunk/drivers/mfd/tc3589x.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ static struct resource gpio_resources[] = {
},
};

static struct mfd_cell tc3589x_devs[] = {
static struct mfd_cell tc3589x_dev_gpio[] = {
{
.name = "tc3589x-gpio",
.num_resources = ARRAY_SIZE(gpio_resources),
Expand Down Expand Up @@ -240,6 +240,26 @@ static int tc3589x_chip_init(struct tc3589x *tc3589x)
return tc3589x_reg_write(tc3589x, TC3589x_RSTINTCLR, 0x1);
}

static int __devinit tc3589x_device_init(struct tc3589x *tc3589x)
{
int ret = 0;
unsigned int blocks = tc3589x->pdata->block;

if (blocks & TC3589x_BLOCK_GPIO) {
ret = mfd_add_devices(tc3589x->dev, -1, tc3589x_dev_gpio,
ARRAY_SIZE(tc3589x_dev_gpio), NULL,
tc3589x->irq_base);
if (ret) {
dev_err(tc3589x->dev, "failed to add gpio child\n");
return ret;
}
dev_info(tc3589x->dev, "added gpio block\n");
}

return ret;

}

static int __devinit tc3589x_probe(struct i2c_client *i2c,
const struct i2c_device_id *id)
{
Expand Down Expand Up @@ -281,11 +301,9 @@ static int __devinit tc3589x_probe(struct i2c_client *i2c,
goto out_removeirq;
}

ret = mfd_add_devices(tc3589x->dev, -1, tc3589x_devs,
ARRAY_SIZE(tc3589x_devs), NULL,
tc3589x->irq_base);
ret = tc3589x_device_init(tc3589x);
if (ret) {
dev_err(tc3589x->dev, "failed to add children\n");
dev_err(tc3589x->dev, "failed to add child devices\n");
goto out_freeirq;
}

Expand Down
7 changes: 7 additions & 0 deletions trunk/include/linux/mfd/tc3589x.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@

#include <linux/device.h>

enum tx3589x_block {
TC3589x_BLOCK_GPIO = 1 << 0,
TC3589x_BLOCK_KEYPAD = 1 << 1,
};

#define TC3589x_RSTCTRL_IRQRST (1 << 4)
#define TC3589x_RSTCTRL_TIMRST (1 << 3)
#define TC3589x_RSTCTRL_ROTRST (1 << 2)
Expand Down Expand Up @@ -122,10 +127,12 @@ struct tc3589x_gpio_platform_data {

/**
* struct tc3589x_platform_data - TC3589x platform data
* @block: bitmask of blocks to enable (use TC3589x_BLOCK_*)
* @irq_base: base IRQ number. %TC3589x_NR_IRQS irqs will be used.
* @gpio: GPIO-specific platform data
*/
struct tc3589x_platform_data {
unsigned int block;
int irq_base;
struct tc3589x_gpio_platform_data *gpio;
};
Expand Down

0 comments on commit 3733720

Please sign in to comment.