Re: [PATCHv5 1/3] mfd: sec-core: Add support for S2MPU02 device

2014-06-16 Thread Chanwoo Choi
Hi Lee,

On 06/16/2014 10:03 PM, Lee Jones wrote:
> On Mon, 16 Jun 2014, Chanwoo Choi wrote:
> 
>> Add support for Samsung S2MPU02 PMIC device to the MFD sec-core driver.
>> The S2MPU02 device includes PMIC/RTC/Clock devices.
>>
>> Signed-off-by: Chanwoo Choi 
>> Reviewed-by: Krzysztof Kozlowski 
>> ---
>>  drivers/mfd/sec-core.c   | 19 +
>>  drivers/mfd/sec-irq.c| 88 
>> 
>>  include/linux/mfd/samsung/core.h |  1 +
>>  include/linux/mfd/samsung/irq.h  | 24 +++
>>  4 files changed, 132 insertions(+)
>>
>> diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
>> index be06d0a..5e8784b 100644
>> --- a/drivers/mfd/sec-core.c
>> +++ b/drivers/mfd/sec-core.c
>> @@ -89,6 +89,17 @@ static const struct mfd_cell s2mpa01_devs[] = {
>>  },
>>  };
>>  
>> +static const struct mfd_cell s2mpu02_devs[] = {
>> +{
>> +.name = "s2mpu02-pmic",
>> +}, {
>> +.name = "s2mpu02-rtc",
> 
> Make these two one liners, so:
> 
>   { .name = "s2mpu02-pmic" },
>   { .name = "s2mpu02-rtc" ),

OK, I'll modify it.

> 
>> +}, {
>> +.name = "s2mpu02-clk",
>> +.of_compatible = "samsung,s2mpu02-clk",
>> +}
>> +};
>> +
>>  #ifdef CONFIG_OF
>>  static const struct of_device_id sec_dt_match[] = {
>>  {   .compatible = "samsung,s5m8767-pmic",
>> @@ -103,6 +114,9 @@ static const struct of_device_id sec_dt_match[] = {
>>  .compatible = "samsung,s2mpa01-pmic",
>>  .data = (void *)S2MPA01,
>>  }, {
>> +.compatible = "samsung,s2mpu02-pmic",
>> +.data = (void *)S2MPU02,
>> +}, {
>>  /* Sentinel */
>>  },
>>  };
>> @@ -342,6 +356,11 @@ static int sec_pmic_probe(struct i2c_client *i2c,
>>  ret = mfd_add_devices(sec_pmic->dev, -1, s2mps14_devs,
>>ARRAY_SIZE(s2mps14_devs), NULL, 0, NULL);
>>  break;
>> +case S2MPU02:
>> +ret = mfd_add_devices(sec_pmic->dev, -1, s2mpu02_devs,
>> +  ARRAY_SIZE(s2mpu02_devs), NULL, 0, NULL);
>> +break;
> 
> This is a bit bonkers.  Instead of passing S2MPU02, why don't you pass
> a new container which holds s2mpu02_devs and s2mpu02_irq_chip, then
> you won't need new mfd_add_devices() and regmap_add_irq_chip() calls
> for every device you want to support.

OK, I'll remove duplicate code of mfd_add_devices() and regmap_add_irq_chip().

Best Regards,
Chanwoo Choi






--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5 1/3] mfd: sec-core: Add support for S2MPU02 device

2014-06-16 Thread Lee Jones
On Mon, 16 Jun 2014, Chanwoo Choi wrote:

> Add support for Samsung S2MPU02 PMIC device to the MFD sec-core driver.
> The S2MPU02 device includes PMIC/RTC/Clock devices.
> 
> Signed-off-by: Chanwoo Choi 
> Reviewed-by: Krzysztof Kozlowski 
> ---
>  drivers/mfd/sec-core.c   | 19 +
>  drivers/mfd/sec-irq.c| 88 
> 
>  include/linux/mfd/samsung/core.h |  1 +
>  include/linux/mfd/samsung/irq.h  | 24 +++
>  4 files changed, 132 insertions(+)
> 
> diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
> index be06d0a..5e8784b 100644
> --- a/drivers/mfd/sec-core.c
> +++ b/drivers/mfd/sec-core.c
> @@ -89,6 +89,17 @@ static const struct mfd_cell s2mpa01_devs[] = {
>   },
>  };
>  
> +static const struct mfd_cell s2mpu02_devs[] = {
> + {
> + .name = "s2mpu02-pmic",
> + }, {
> + .name = "s2mpu02-rtc",

Make these two one liners, so:

  { .name = "s2mpu02-pmic" },
  { .name = "s2mpu02-rtc" ),

> + }, {
> + .name = "s2mpu02-clk",
> + .of_compatible = "samsung,s2mpu02-clk",
> + }
> +};
> +
>  #ifdef CONFIG_OF
>  static const struct of_device_id sec_dt_match[] = {
>   {   .compatible = "samsung,s5m8767-pmic",
> @@ -103,6 +114,9 @@ static const struct of_device_id sec_dt_match[] = {
>   .compatible = "samsung,s2mpa01-pmic",
>   .data = (void *)S2MPA01,
>   }, {
> + .compatible = "samsung,s2mpu02-pmic",
> + .data = (void *)S2MPU02,
> + }, {
>   /* Sentinel */
>   },
>  };
> @@ -342,6 +356,11 @@ static int sec_pmic_probe(struct i2c_client *i2c,
>   ret = mfd_add_devices(sec_pmic->dev, -1, s2mps14_devs,
> ARRAY_SIZE(s2mps14_devs), NULL, 0, NULL);
>   break;
> + case S2MPU02:
> + ret = mfd_add_devices(sec_pmic->dev, -1, s2mpu02_devs,
> +   ARRAY_SIZE(s2mpu02_devs), NULL, 0, NULL);
> + break;

This is a bit bonkers.  Instead of passing S2MPU02, why don't you pass
a new container which holds s2mpu02_devs and s2mpu02_irq_chip, then
you won't need new mfd_add_devices() and regmap_add_irq_chip() calls
for every device you want to support.

[...]

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5 1/3] mfd: sec-core: Add support for S2MPU02 device

2014-06-16 Thread Lee Jones
On Mon, 16 Jun 2014, Chanwoo Choi wrote:

 Add support for Samsung S2MPU02 PMIC device to the MFD sec-core driver.
 The S2MPU02 device includes PMIC/RTC/Clock devices.
 
 Signed-off-by: Chanwoo Choi cw00.c...@samsung.com
 Reviewed-by: Krzysztof Kozlowski k.kozlow...@samsung.com
 ---
  drivers/mfd/sec-core.c   | 19 +
  drivers/mfd/sec-irq.c| 88 
 
  include/linux/mfd/samsung/core.h |  1 +
  include/linux/mfd/samsung/irq.h  | 24 +++
  4 files changed, 132 insertions(+)
 
 diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
 index be06d0a..5e8784b 100644
 --- a/drivers/mfd/sec-core.c
 +++ b/drivers/mfd/sec-core.c
 @@ -89,6 +89,17 @@ static const struct mfd_cell s2mpa01_devs[] = {
   },
  };
  
 +static const struct mfd_cell s2mpu02_devs[] = {
 + {
 + .name = s2mpu02-pmic,
 + }, {
 + .name = s2mpu02-rtc,

Make these two one liners, so:

  { .name = s2mpu02-pmic },
  { .name = s2mpu02-rtc ),

 + }, {
 + .name = s2mpu02-clk,
 + .of_compatible = samsung,s2mpu02-clk,
 + }
 +};
 +
  #ifdef CONFIG_OF
  static const struct of_device_id sec_dt_match[] = {
   {   .compatible = samsung,s5m8767-pmic,
 @@ -103,6 +114,9 @@ static const struct of_device_id sec_dt_match[] = {
   .compatible = samsung,s2mpa01-pmic,
   .data = (void *)S2MPA01,
   }, {
 + .compatible = samsung,s2mpu02-pmic,
 + .data = (void *)S2MPU02,
 + }, {
   /* Sentinel */
   },
  };
 @@ -342,6 +356,11 @@ static int sec_pmic_probe(struct i2c_client *i2c,
   ret = mfd_add_devices(sec_pmic-dev, -1, s2mps14_devs,
 ARRAY_SIZE(s2mps14_devs), NULL, 0, NULL);
   break;
 + case S2MPU02:
 + ret = mfd_add_devices(sec_pmic-dev, -1, s2mpu02_devs,
 +   ARRAY_SIZE(s2mpu02_devs), NULL, 0, NULL);
 + break;

This is a bit bonkers.  Instead of passing S2MPU02, why don't you pass
a new container which holds s2mpu02_devs and s2mpu02_irq_chip, then
you won't need new mfd_add_devices() and regmap_add_irq_chip() calls
for every device you want to support.

[...]

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHv5 1/3] mfd: sec-core: Add support for S2MPU02 device

2014-06-16 Thread Chanwoo Choi
Hi Lee,

On 06/16/2014 10:03 PM, Lee Jones wrote:
 On Mon, 16 Jun 2014, Chanwoo Choi wrote:
 
 Add support for Samsung S2MPU02 PMIC device to the MFD sec-core driver.
 The S2MPU02 device includes PMIC/RTC/Clock devices.

 Signed-off-by: Chanwoo Choi cw00.c...@samsung.com
 Reviewed-by: Krzysztof Kozlowski k.kozlow...@samsung.com
 ---
  drivers/mfd/sec-core.c   | 19 +
  drivers/mfd/sec-irq.c| 88 
 
  include/linux/mfd/samsung/core.h |  1 +
  include/linux/mfd/samsung/irq.h  | 24 +++
  4 files changed, 132 insertions(+)

 diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
 index be06d0a..5e8784b 100644
 --- a/drivers/mfd/sec-core.c
 +++ b/drivers/mfd/sec-core.c
 @@ -89,6 +89,17 @@ static const struct mfd_cell s2mpa01_devs[] = {
  },
  };
  
 +static const struct mfd_cell s2mpu02_devs[] = {
 +{
 +.name = s2mpu02-pmic,
 +}, {
 +.name = s2mpu02-rtc,
 
 Make these two one liners, so:
 
   { .name = s2mpu02-pmic },
   { .name = s2mpu02-rtc ),

OK, I'll modify it.

 
 +}, {
 +.name = s2mpu02-clk,
 +.of_compatible = samsung,s2mpu02-clk,
 +}
 +};
 +
  #ifdef CONFIG_OF
  static const struct of_device_id sec_dt_match[] = {
  {   .compatible = samsung,s5m8767-pmic,
 @@ -103,6 +114,9 @@ static const struct of_device_id sec_dt_match[] = {
  .compatible = samsung,s2mpa01-pmic,
  .data = (void *)S2MPA01,
  }, {
 +.compatible = samsung,s2mpu02-pmic,
 +.data = (void *)S2MPU02,
 +}, {
  /* Sentinel */
  },
  };
 @@ -342,6 +356,11 @@ static int sec_pmic_probe(struct i2c_client *i2c,
  ret = mfd_add_devices(sec_pmic-dev, -1, s2mps14_devs,
ARRAY_SIZE(s2mps14_devs), NULL, 0, NULL);
  break;
 +case S2MPU02:
 +ret = mfd_add_devices(sec_pmic-dev, -1, s2mpu02_devs,
 +  ARRAY_SIZE(s2mpu02_devs), NULL, 0, NULL);
 +break;
 
 This is a bit bonkers.  Instead of passing S2MPU02, why don't you pass
 a new container which holds s2mpu02_devs and s2mpu02_irq_chip, then
 you won't need new mfd_add_devices() and regmap_add_irq_chip() calls
 for every device you want to support.

OK, I'll remove duplicate code of mfd_add_devices() and regmap_add_irq_chip().

Best Regards,
Chanwoo Choi






--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHv5 1/3] mfd: sec-core: Add support for S2MPU02 device

2014-06-15 Thread Chanwoo Choi
Add support for Samsung S2MPU02 PMIC device to the MFD sec-core driver.
The S2MPU02 device includes PMIC/RTC/Clock devices.

Signed-off-by: Chanwoo Choi 
Reviewed-by: Krzysztof Kozlowski 
---
 drivers/mfd/sec-core.c   | 19 +
 drivers/mfd/sec-irq.c| 88 
 include/linux/mfd/samsung/core.h |  1 +
 include/linux/mfd/samsung/irq.h  | 24 +++
 4 files changed, 132 insertions(+)

diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
index be06d0a..5e8784b 100644
--- a/drivers/mfd/sec-core.c
+++ b/drivers/mfd/sec-core.c
@@ -89,6 +89,17 @@ static const struct mfd_cell s2mpa01_devs[] = {
},
 };
 
+static const struct mfd_cell s2mpu02_devs[] = {
+   {
+   .name = "s2mpu02-pmic",
+   }, {
+   .name = "s2mpu02-rtc",
+   }, {
+   .name = "s2mpu02-clk",
+   .of_compatible = "samsung,s2mpu02-clk",
+   }
+};
+
 #ifdef CONFIG_OF
 static const struct of_device_id sec_dt_match[] = {
{   .compatible = "samsung,s5m8767-pmic",
@@ -103,6 +114,9 @@ static const struct of_device_id sec_dt_match[] = {
.compatible = "samsung,s2mpa01-pmic",
.data = (void *)S2MPA01,
}, {
+   .compatible = "samsung,s2mpu02-pmic",
+   .data = (void *)S2MPU02,
+   }, {
/* Sentinel */
},
 };
@@ -342,6 +356,11 @@ static int sec_pmic_probe(struct i2c_client *i2c,
ret = mfd_add_devices(sec_pmic->dev, -1, s2mps14_devs,
  ARRAY_SIZE(s2mps14_devs), NULL, 0, NULL);
break;
+   case S2MPU02:
+   ret = mfd_add_devices(sec_pmic->dev, -1, s2mpu02_devs,
+ ARRAY_SIZE(s2mpu02_devs), NULL, 0, NULL);
+   break;
+
default:
/* If this happens the probe function is problem */
BUG();
diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c
index 654e2c1..0cabd03 100644
--- a/drivers/mfd/sec-irq.c
+++ b/drivers/mfd/sec-irq.c
@@ -20,6 +20,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 
@@ -161,6 +162,77 @@ static const struct regmap_irq s2mps14_irqs[] = {
},
 };
 
+static const struct regmap_irq s2mpu02_irqs[] = {
+   [S2MPU02_IRQ_PWRONF] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_PWRONF_MASK,
+   },
+   [S2MPU02_IRQ_PWRONR] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_PWRONR_MASK,
+   },
+   [S2MPU02_IRQ_JIGONBF] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_JIGONBF_MASK,
+   },
+   [S2MPU02_IRQ_JIGONBR] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_JIGONBR_MASK,
+   },
+   [S2MPU02_IRQ_ACOKBF] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_ACOKBF_MASK,
+   },
+   [S2MPU02_IRQ_ACOKBR] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_ACOKBR_MASK,
+   },
+   [S2MPU02_IRQ_PWRON1S] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_PWRON1S_MASK,
+   },
+   [S2MPU02_IRQ_MRB] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_MRB_MASK,
+   },
+   [S2MPU02_IRQ_RTC60S] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTC60S_MASK,
+   },
+   [S2MPU02_IRQ_RTCA1] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTCA1_MASK,
+   },
+   [S2MPU02_IRQ_RTCA0] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTCA0_MASK,
+   },
+   [S2MPU02_IRQ_SMPL] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_SMPL_MASK,
+   },
+   [S2MPU02_IRQ_RTC1S] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTC1S_MASK,
+   },
+   [S2MPU02_IRQ_WTSR] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_WTSR_MASK,
+   },
+   [S2MPU02_IRQ_INT120C] = {
+   .reg_offset = 2,
+   .mask = S2MPS11_IRQ_INT120C_MASK,
+   },
+   [S2MPU02_IRQ_INT140C] = {
+   .reg_offset = 2,
+   .mask = S2MPS11_IRQ_INT140C_MASK,
+   },
+   [S2MPU02_IRQ_TSD] = {
+   .reg_offset = 2,
+   .mask = S2MPS14_IRQ_TSD_MASK,
+   },
+};
+
 static const struct regmap_irq s5m8767_irqs[] = {
[S5M8767_IRQ_PWRR] = {
.reg_offset = 0,
@@ -327,6 +399,16 @@ static const struct regmap_irq_chip s2mps14_irq_chip = {
.ack_base = S2MPS14_REG_INT1,
 };
 
+static const struct regmap_irq_chip s2mpu02_irq_chip = {
+   .name = "s2mpu02",
+   .irqs = s2mpu02_irqs,
+   .num_irqs = ARRAY_SIZE(s2mpu02_irqs),
+   .num_regs = 3,
+   .status_base = S2MPU02_REG_INT1,
+   .mask_base = S2MPU02_REG_INT1M,
+   .ack_base = 

[PATCHv5 1/3] mfd: sec-core: Add support for S2MPU02 device

2014-06-15 Thread Chanwoo Choi
Add support for Samsung S2MPU02 PMIC device to the MFD sec-core driver.
The S2MPU02 device includes PMIC/RTC/Clock devices.

Signed-off-by: Chanwoo Choi cw00.c...@samsung.com
Reviewed-by: Krzysztof Kozlowski k.kozlow...@samsung.com
---
 drivers/mfd/sec-core.c   | 19 +
 drivers/mfd/sec-irq.c| 88 
 include/linux/mfd/samsung/core.h |  1 +
 include/linux/mfd/samsung/irq.h  | 24 +++
 4 files changed, 132 insertions(+)

diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
index be06d0a..5e8784b 100644
--- a/drivers/mfd/sec-core.c
+++ b/drivers/mfd/sec-core.c
@@ -89,6 +89,17 @@ static const struct mfd_cell s2mpa01_devs[] = {
},
 };
 
+static const struct mfd_cell s2mpu02_devs[] = {
+   {
+   .name = s2mpu02-pmic,
+   }, {
+   .name = s2mpu02-rtc,
+   }, {
+   .name = s2mpu02-clk,
+   .of_compatible = samsung,s2mpu02-clk,
+   }
+};
+
 #ifdef CONFIG_OF
 static const struct of_device_id sec_dt_match[] = {
{   .compatible = samsung,s5m8767-pmic,
@@ -103,6 +114,9 @@ static const struct of_device_id sec_dt_match[] = {
.compatible = samsung,s2mpa01-pmic,
.data = (void *)S2MPA01,
}, {
+   .compatible = samsung,s2mpu02-pmic,
+   .data = (void *)S2MPU02,
+   }, {
/* Sentinel */
},
 };
@@ -342,6 +356,11 @@ static int sec_pmic_probe(struct i2c_client *i2c,
ret = mfd_add_devices(sec_pmic-dev, -1, s2mps14_devs,
  ARRAY_SIZE(s2mps14_devs), NULL, 0, NULL);
break;
+   case S2MPU02:
+   ret = mfd_add_devices(sec_pmic-dev, -1, s2mpu02_devs,
+ ARRAY_SIZE(s2mpu02_devs), NULL, 0, NULL);
+   break;
+
default:
/* If this happens the probe function is problem */
BUG();
diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c
index 654e2c1..0cabd03 100644
--- a/drivers/mfd/sec-irq.c
+++ b/drivers/mfd/sec-irq.c
@@ -20,6 +20,7 @@
 #include linux/mfd/samsung/irq.h
 #include linux/mfd/samsung/s2mps11.h
 #include linux/mfd/samsung/s2mps14.h
+#include linux/mfd/samsung/s2mpu02.h
 #include linux/mfd/samsung/s5m8763.h
 #include linux/mfd/samsung/s5m8767.h
 
@@ -161,6 +162,77 @@ static const struct regmap_irq s2mps14_irqs[] = {
},
 };
 
+static const struct regmap_irq s2mpu02_irqs[] = {
+   [S2MPU02_IRQ_PWRONF] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_PWRONF_MASK,
+   },
+   [S2MPU02_IRQ_PWRONR] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_PWRONR_MASK,
+   },
+   [S2MPU02_IRQ_JIGONBF] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_JIGONBF_MASK,
+   },
+   [S2MPU02_IRQ_JIGONBR] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_JIGONBR_MASK,
+   },
+   [S2MPU02_IRQ_ACOKBF] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_ACOKBF_MASK,
+   },
+   [S2MPU02_IRQ_ACOKBR] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_ACOKBR_MASK,
+   },
+   [S2MPU02_IRQ_PWRON1S] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_PWRON1S_MASK,
+   },
+   [S2MPU02_IRQ_MRB] = {
+   .reg_offset = 0,
+   .mask = S2MPS11_IRQ_MRB_MASK,
+   },
+   [S2MPU02_IRQ_RTC60S] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTC60S_MASK,
+   },
+   [S2MPU02_IRQ_RTCA1] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTCA1_MASK,
+   },
+   [S2MPU02_IRQ_RTCA0] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTCA0_MASK,
+   },
+   [S2MPU02_IRQ_SMPL] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_SMPL_MASK,
+   },
+   [S2MPU02_IRQ_RTC1S] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_RTC1S_MASK,
+   },
+   [S2MPU02_IRQ_WTSR] = {
+   .reg_offset = 1,
+   .mask = S2MPS11_IRQ_WTSR_MASK,
+   },
+   [S2MPU02_IRQ_INT120C] = {
+   .reg_offset = 2,
+   .mask = S2MPS11_IRQ_INT120C_MASK,
+   },
+   [S2MPU02_IRQ_INT140C] = {
+   .reg_offset = 2,
+   .mask = S2MPS11_IRQ_INT140C_MASK,
+   },
+   [S2MPU02_IRQ_TSD] = {
+   .reg_offset = 2,
+   .mask = S2MPS14_IRQ_TSD_MASK,
+   },
+};
+
 static const struct regmap_irq s5m8767_irqs[] = {
[S5M8767_IRQ_PWRR] = {
.reg_offset = 0,
@@ -327,6 +399,16 @@ static const struct regmap_irq_chip s2mps14_irq_chip = {
.ack_base = S2MPS14_REG_INT1,
 };
 
+static const struct regmap_irq_chip s2mpu02_irq_chip = {
+   .name = s2mpu02,
+   .irqs =