Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 329956
b: refs/heads/master
c: f84e995
h: refs/heads/master
v: v3
  • Loading branch information
Chanwoo Choi authored and Samuel Ortiz committed Sep 15, 2012
1 parent 6783685 commit a764956
Show file tree
Hide file tree
Showing 2 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: 0fd0013cda05a3bbdaf861c9fdfe8496230da672
refs/heads/master: f84e9954f7352293e223b0b5f3b13c09e7cba098
36 changes: 31 additions & 5 deletions trunk/drivers/mfd/max77693-irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ static void max77693_irq_mask(struct irq_data *data)
const struct max77693_irq_data *irq_data =
irq_to_max77693_irq(max77693, data->irq);

if (irq_data->group >= MAX77693_IRQ_GROUP_NR)
return;

if (irq_data->group >= MUIC_INT1 && irq_data->group <= MUIC_INT3)
max77693->irq_masks_cur[irq_data->group] &= ~irq_data->mask;
else
Expand All @@ -149,6 +152,9 @@ static void max77693_irq_unmask(struct irq_data *data)
const struct max77693_irq_data *irq_data =
irq_to_max77693_irq(max77693, data->irq);

if (irq_data->group >= MAX77693_IRQ_GROUP_NR)
return;

if (irq_data->group >= MUIC_INT1 && irq_data->group <= MUIC_INT3)
max77693->irq_masks_cur[irq_data->group] |= irq_data->mask;
else
Expand Down Expand Up @@ -200,7 +206,7 @@ static irqreturn_t max77693_irq_thread(int irq, void *data)

if (irq_src & MAX77693_IRQSRC_MUIC)
/* MUIC INT1 ~ INT3 */
max77693_bulk_read(max77693->regmap, MAX77693_MUIC_REG_INT1,
max77693_bulk_read(max77693->regmap_muic, MAX77693_MUIC_REG_INT1,
MAX77693_NUM_IRQ_MUIC_REGS, &irq_reg[MUIC_INT1]);

/* Apply masking */
Expand Down Expand Up @@ -255,7 +261,8 @@ int max77693_irq_init(struct max77693_dev *max77693)
{
struct irq_domain *domain;
int i;
int ret;
int ret = 0;
u8 intsrc_mask;

mutex_init(&max77693->irqlock);

Expand Down Expand Up @@ -287,19 +294,38 @@ int max77693_irq_init(struct max77693_dev *max77693)
&max77693_irq_domain_ops, max77693);
if (!domain) {
dev_err(max77693->dev, "could not create irq domain\n");
return -ENODEV;
ret = -ENODEV;
goto err_irq;
}
max77693->irq_domain = domain;

/* Unmask max77693 interrupt */
ret = max77693_read_reg(max77693->regmap,
MAX77693_PMIC_REG_INTSRC_MASK, &intsrc_mask);
if (ret < 0) {
dev_err(max77693->dev, "fail to read PMIC register\n");
goto err_irq;
}

intsrc_mask &= ~(MAX77693_IRQSRC_CHG);
intsrc_mask &= ~(MAX77693_IRQSRC_FLASH);
intsrc_mask &= ~(MAX77693_IRQSRC_MUIC);
ret = max77693_write_reg(max77693->regmap,
MAX77693_PMIC_REG_INTSRC_MASK, intsrc_mask);
if (ret < 0) {
dev_err(max77693->dev, "fail to write PMIC register\n");
goto err_irq;
}

ret = request_threaded_irq(max77693->irq, NULL, max77693_irq_thread,
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
"max77693-irq", max77693);

if (ret)
dev_err(max77693->dev, "Failed to request IRQ %d: %d\n",
max77693->irq, ret);

return 0;
err_irq:
return ret;
}

void max77693_irq_exit(struct max77693_dev *max77693)
Expand Down

0 comments on commit a764956

Please sign in to comment.