diff options
Diffstat (limited to 'drivers/i2c')
| -rw-r--r-- | drivers/i2c/chips/tps65010.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/i2c/chips/tps65010.c b/drivers/i2c/chips/tps65010.c index e70b3db69edd..1af3dfbb8086 100644 --- a/drivers/i2c/chips/tps65010.c +++ b/drivers/i2c/chips/tps65010.c | |||
| @@ -494,6 +494,7 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
| 494 | { | 494 | { |
| 495 | struct tps65010 *tps; | 495 | struct tps65010 *tps; |
| 496 | int status; | 496 | int status; |
| 497 | unsigned long irqflags; | ||
| 497 | 498 | ||
| 498 | if (the_tps) { | 499 | if (the_tps) { |
| 499 | dev_dbg(&bus->dev, "only one %s for now\n", DRIVER_NAME); | 500 | dev_dbg(&bus->dev, "only one %s for now\n", DRIVER_NAME); |
| @@ -520,13 +521,14 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
| 520 | } | 521 | } |
| 521 | 522 | ||
| 522 | #ifdef CONFIG_ARM | 523 | #ifdef CONFIG_ARM |
| 524 | irqflags = SA_SAMPLE_RANDOM | SA_TRIGGER_LOW; | ||
| 523 | if (machine_is_omap_h2()) { | 525 | if (machine_is_omap_h2()) { |
| 524 | tps->model = TPS65010; | 526 | tps->model = TPS65010; |
| 525 | omap_cfg_reg(W4_GPIO58); | 527 | omap_cfg_reg(W4_GPIO58); |
| 526 | tps->irq = OMAP_GPIO_IRQ(58); | 528 | tps->irq = OMAP_GPIO_IRQ(58); |
| 527 | omap_request_gpio(58); | 529 | omap_request_gpio(58); |
| 528 | omap_set_gpio_direction(58, 1); | 530 | omap_set_gpio_direction(58, 1); |
| 529 | set_irq_type(tps->irq, IRQT_FALLING); | 531 | irqflags |= SA_TRIGGER_FALLING; |
| 530 | } | 532 | } |
| 531 | if (machine_is_omap_osk()) { | 533 | if (machine_is_omap_osk()) { |
| 532 | tps->model = TPS65010; | 534 | tps->model = TPS65010; |
| @@ -534,7 +536,7 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
| 534 | tps->irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1)); | 536 | tps->irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1)); |
| 535 | omap_request_gpio(OMAP_MPUIO(1)); | 537 | omap_request_gpio(OMAP_MPUIO(1)); |
| 536 | omap_set_gpio_direction(OMAP_MPUIO(1), 1); | 538 | omap_set_gpio_direction(OMAP_MPUIO(1), 1); |
| 537 | set_irq_type(tps->irq, IRQT_FALLING); | 539 | irqflags |= SA_TRIGGER_FALLING; |
| 538 | } | 540 | } |
| 539 | if (machine_is_omap_h3()) { | 541 | if (machine_is_omap_h3()) { |
| 540 | tps->model = TPS65013; | 542 | tps->model = TPS65013; |
| @@ -542,13 +544,12 @@ tps65010_probe(struct i2c_adapter *bus, int address, int kind) | |||
| 542 | // FIXME set up this board's IRQ ... | 544 | // FIXME set up this board's IRQ ... |
| 543 | } | 545 | } |
| 544 | #else | 546 | #else |
| 545 | #define set_irq_type(num,trigger) do{}while(0) | 547 | irqflags = SA_SAMPLE_RANDOM; |
| 546 | #endif | 548 | #endif |
| 547 | 549 | ||
| 548 | if (tps->irq > 0) { | 550 | if (tps->irq > 0) { |
| 549 | set_irq_type(tps->irq, IRQT_LOW); | ||
| 550 | status = request_irq(tps->irq, tps65010_irq, | 551 | status = request_irq(tps->irq, tps65010_irq, |
| 551 | SA_SAMPLE_RANDOM, DRIVER_NAME, tps); | 552 | irqflags, DRIVER_NAME, tps); |
| 552 | if (status < 0) { | 553 | if (status < 0) { |
| 553 | dev_dbg(&tps->client.dev, "can't get IRQ %d, err %d\n", | 554 | dev_dbg(&tps->client.dev, "can't get IRQ %d, err %d\n", |
| 554 | tps->irq, status); | 555 | tps->irq, status); |
