Re: [RESEND PATCH v3 2/2] mfd: da9063: Add support for latest DA silicon revision

2020-07-16 Thread Lee Jones
On Mon, 13 Jul 2020, Adam Thomson wrote:

> This update adds new regmap tables to support the latest DA silicon
> which will automatically be selected based on the chip and variant
> information read from the device.
> 
> Signed-off-by: Adam Thomson 
> Acked-for-MFD-by: Lee Jones 
> ---
> 
> v3:
>  - No change
> 
> v2:
>  - No change
> 
>  drivers/mfd/da9063-i2c.c| 91 
> -
>  include/linux/mfd/da9063/core.h |  1 +
>  2 files changed, 82 insertions(+), 10 deletions(-)

Applied, thanks.

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog


[RESEND PATCH v3 2/2] mfd: da9063: Add support for latest DA silicon revision

2020-07-13 Thread Adam Thomson
This update adds new regmap tables to support the latest DA silicon
which will automatically be selected based on the chip and variant
information read from the device.

Signed-off-by: Adam Thomson 
Acked-for-MFD-by: Lee Jones 
---

v3:
 - No change

v2:
 - No change

 drivers/mfd/da9063-i2c.c| 91 -
 include/linux/mfd/da9063/core.h |  1 +
 2 files changed, 82 insertions(+), 10 deletions(-)

diff --git a/drivers/mfd/da9063-i2c.c b/drivers/mfd/da9063-i2c.c
index 4815489..b8217ad 100644
--- a/drivers/mfd/da9063-i2c.c
+++ b/drivers/mfd/da9063-i2c.c
@@ -197,7 +197,7 @@ static int da9063_get_device_type(struct i2c_client *i2c, 
struct da9063 *da9063)
regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19),
 };
 
-static const struct regmap_range da9063_bb_volatile_ranges[] = {
+static const struct regmap_range da9063_bb_da_volatile_ranges[] = {
regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D),
regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B),
regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F),
@@ -219,9 +219,9 @@ static int da9063_get_device_type(struct i2c_client *i2c, 
struct da9063 *da9063)
.n_yes_ranges = ARRAY_SIZE(da9063_bb_writeable_ranges),
 };
 
-static const struct regmap_access_table da9063_bb_volatile_table = {
-   .yes_ranges = da9063_bb_volatile_ranges,
-   .n_yes_ranges = ARRAY_SIZE(da9063_bb_volatile_ranges),
+static const struct regmap_access_table da9063_bb_da_volatile_table = {
+   .yes_ranges = da9063_bb_da_volatile_ranges,
+   .n_yes_ranges = ARRAY_SIZE(da9063_bb_da_volatile_ranges),
 };
 
 static const struct regmap_range da9063l_bb_readable_ranges[] = {
@@ -241,7 +241,7 @@ static int da9063_get_device_type(struct i2c_client *i2c, 
struct da9063 *da9063)
regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_19),
 };
 
-static const struct regmap_range da9063l_bb_volatile_ranges[] = {
+static const struct regmap_range da9063l_bb_da_volatile_ranges[] = {
regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_EVENT_D),
regmap_reg_range(DA9063_REG_CONTROL_A, DA9063_REG_CONTROL_B),
regmap_reg_range(DA9063_REG_CONTROL_E, DA9063_REG_CONTROL_F),
@@ -263,9 +263,64 @@ static int da9063_get_device_type(struct i2c_client *i2c, 
struct da9063 *da9063)
.n_yes_ranges = ARRAY_SIZE(da9063l_bb_writeable_ranges),
 };
 
-static const struct regmap_access_table da9063l_bb_volatile_table = {
-   .yes_ranges = da9063l_bb_volatile_ranges,
-   .n_yes_ranges = ARRAY_SIZE(da9063l_bb_volatile_ranges),
+static const struct regmap_access_table da9063l_bb_da_volatile_table = {
+   .yes_ranges = da9063l_bb_da_volatile_ranges,
+   .n_yes_ranges = ARRAY_SIZE(da9063l_bb_da_volatile_ranges),
+};
+
+static const struct regmap_range da9063_da_readable_ranges[] = {
+   regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_BB_REG_SECOND_D),
+   regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31),
+   regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW),
+   regmap_reg_range(DA9063_REG_T_OFFSET, DA9063_BB_REG_GP_ID_11),
+   regmap_reg_range(DA9063_REG_DEVICE_ID, DA9063_REG_VARIANT_ID),
+};
+
+static const struct regmap_range da9063_da_writeable_ranges[] = {
+   regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_PAGE_CON),
+   regmap_reg_range(DA9063_REG_FAULT_LOG, DA9063_REG_VSYS_MON),
+   regmap_reg_range(DA9063_REG_COUNT_S, DA9063_BB_REG_ALARM_Y),
+   regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31),
+   regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW),
+   regmap_reg_range(DA9063_REG_CONFIG_I, DA9063_BB_REG_MON_REG_4),
+   regmap_reg_range(DA9063_BB_REG_GP_ID_0, DA9063_BB_REG_GP_ID_11),
+};
+
+static const struct regmap_access_table da9063_da_readable_table = {
+   .yes_ranges = da9063_da_readable_ranges,
+   .n_yes_ranges = ARRAY_SIZE(da9063_da_readable_ranges),
+};
+
+static const struct regmap_access_table da9063_da_writeable_table = {
+   .yes_ranges = da9063_da_writeable_ranges,
+   .n_yes_ranges = ARRAY_SIZE(da9063_da_writeable_ranges),
+};
+
+static const struct regmap_range da9063l_da_readable_ranges[] = {
+   regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_MON_A10_RES),
+   regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31),
+   regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW),
+   regmap_reg_range(DA9063_REG_T_OFFSET, DA9063_BB_REG_GP_ID_11),
+   regmap_reg_range(DA9063_REG_DEVICE_ID, DA9063_REG_VARIANT_ID),
+};
+
+static const struct regmap_range da9063l_da_writeable_ranges[] = {
+   regmap_reg_range(DA9063_REG_PAGE_CON, DA9063_REG_PAGE_CON),
+   regmap_reg_range(DA9063_REG_FAULT_LOG, DA9063_REG_VSYS_MON),
+   regmap_reg_range(DA9063_REG_SEQ, DA9063_REG_ID_32_31),
+   regmap_reg_range(DA9063_REG_SEQ_A, DA9063_REG_AUTO3_LOW),
+   regmap_reg_range(DA9063_REG_CONFIG_I, DA9063_BB_REG_MON_REG_4),
+