diff options
| -rw-r--r-- | drivers/extcon/extcon-max77693.c | 27 | ||||
| -rw-r--r-- | include/linux/mfd/max77693.h | 13 |
2 files changed, 40 insertions, 0 deletions
diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c index e0ed622a0df0..cffeab65051e 100644 --- a/drivers/extcon/extcon-max77693.c +++ b/drivers/extcon/extcon-max77693.c | |||
| @@ -651,6 +651,8 @@ out: | |||
| 651 | static int __devinit max77693_muic_probe(struct platform_device *pdev) | 651 | static int __devinit max77693_muic_probe(struct platform_device *pdev) |
| 652 | { | 652 | { |
| 653 | struct max77693_dev *max77693 = dev_get_drvdata(pdev->dev.parent); | 653 | struct max77693_dev *max77693 = dev_get_drvdata(pdev->dev.parent); |
| 654 | struct max77693_platform_data *pdata = dev_get_platdata(max77693->dev); | ||
| 655 | struct max77693_muic_platform_data *muic_pdata = pdata->muic_data; | ||
| 654 | struct max77693_muic_info *info; | 656 | struct max77693_muic_info *info; |
| 655 | int ret, i; | 657 | int ret, i; |
| 656 | u8 id; | 658 | u8 id; |
| @@ -721,6 +723,31 @@ static int __devinit max77693_muic_probe(struct platform_device *pdev) | |||
| 721 | goto err_extcon; | 723 | goto err_extcon; |
| 722 | } | 724 | } |
| 723 | 725 | ||
| 726 | /* Initialize MUIC register by using platform data */ | ||
| 727 | for (i = 0 ; i < muic_pdata->num_init_data ; i++) { | ||
| 728 | enum max77693_irq_source irq_src = MAX77693_IRQ_GROUP_NR; | ||
| 729 | |||
| 730 | max77693_write_reg(info->max77693->regmap_muic, | ||
| 731 | muic_pdata->init_data[i].addr, | ||
| 732 | muic_pdata->init_data[i].data); | ||
| 733 | |||
| 734 | switch (muic_pdata->init_data[i].addr) { | ||
| 735 | case MAX77693_MUIC_REG_INTMASK1: | ||
| 736 | irq_src = MUIC_INT1; | ||
| 737 | break; | ||
| 738 | case MAX77693_MUIC_REG_INTMASK2: | ||
| 739 | irq_src = MUIC_INT2; | ||
| 740 | break; | ||
| 741 | case MAX77693_MUIC_REG_INTMASK3: | ||
| 742 | irq_src = MUIC_INT3; | ||
| 743 | break; | ||
| 744 | } | ||
| 745 | |||
| 746 | if (irq_src < MAX77693_IRQ_GROUP_NR) | ||
| 747 | info->max77693->irq_masks_cur[irq_src] | ||
| 748 | = muic_pdata->init_data[i].data; | ||
| 749 | } | ||
| 750 | |||
| 724 | /* Check revision number of MUIC device*/ | 751 | /* Check revision number of MUIC device*/ |
| 725 | ret = max77693_read_reg(info->max77693->regmap_muic, | 752 | ret = max77693_read_reg(info->max77693->regmap_muic, |
| 726 | MAX77693_MUIC_REG_ID, &id); | 753 | MAX77693_MUIC_REG_ID, &id); |
diff --git a/include/linux/mfd/max77693.h b/include/linux/mfd/max77693.h index 1d28ae90384e..fe03b2d35d4f 100644 --- a/include/linux/mfd/max77693.h +++ b/include/linux/mfd/max77693.h | |||
| @@ -30,7 +30,20 @@ | |||
| 30 | #ifndef __LINUX_MFD_MAX77693_H | 30 | #ifndef __LINUX_MFD_MAX77693_H |
| 31 | #define __LINUX_MFD_MAX77693_H | 31 | #define __LINUX_MFD_MAX77693_H |
| 32 | 32 | ||
| 33 | struct max77693_reg_data { | ||
| 34 | u8 addr; | ||
| 35 | u8 data; | ||
| 36 | }; | ||
| 37 | |||
| 38 | struct max77693_muic_platform_data { | ||
| 39 | struct max77693_reg_data *init_data; | ||
| 40 | int num_init_data; | ||
| 41 | }; | ||
| 42 | |||
| 33 | struct max77693_platform_data { | 43 | struct max77693_platform_data { |
| 34 | int wakeup; | 44 | int wakeup; |
| 45 | |||
| 46 | /* muic data */ | ||
| 47 | struct max77693_muic_platform_data *muic_data; | ||
| 35 | }; | 48 | }; |
| 36 | #endif /* __LINUX_MFD_MAX77693_H */ | 49 | #endif /* __LINUX_MFD_MAX77693_H */ |
