Re: [PATCH 03/16] mfd: madera: Register map tables for Cirrus Logic CS47L35
On Wed, 05 Apr 2017, Richard Fitzgerald wrote: > Regmap configuration tables for Cirrus Logic CS47L35 codecs. > > Signed-off-by: Piotr Stankiewicz> Signed-off-by: Richard Fitzgerald > Signed-off-by: Charles Keepax > --- > drivers/mfd/Kconfig |6 + > drivers/mfd/Makefile |3 + > drivers/mfd/cs47l35-tables.c | 1688 > ++ > 3 files changed, 1697 insertions(+) > create mode 100644 drivers/mfd/cs47l35-tables.c > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index f0f9979..5aa62f4 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -226,6 +226,12 @@ config MFD_MADERA_SPI > Support for the Cirrus Logic Madera platform audio SoC > core functionality controlled via SPI. > > +config MFD_CS47L35 > + bool "Cirrus Logic CS47L35" > + depends on MFD_MADERA > + help > + Support for Cirrus Logic CS47L35 Smart Codec > + > config MFD_ASIC3 > bool "Compaq ASIC3" > depends on GPIOLIB && ARM > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index c41f6c9..c14a86d 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -73,6 +73,9 @@ wm8994-objs := wm8994-core.o wm8994-irq.o > wm8994-regmap.o > obj-$(CONFIG_MFD_WM8994) += wm8994.o > > obj-$(CONFIG_MFD_MADERA) += madera-core.o > +ifeq ($(CONFIG_MFD_CS47L35),y) > +obj-$(CONFIG_MFD_MADERA) += cs47l35-tables.o > +endif > obj-$(CONFIG_MFD_MADERA_I2C) += madera-i2c.o > obj-$(CONFIG_MFD_MADERA_SPI) += madera-spi.o > > diff --git a/drivers/mfd/cs47l35-tables.c b/drivers/mfd/cs47l35-tables.c > new file mode 100644 > index 000..1336c60 > --- /dev/null > +++ b/drivers/mfd/cs47l35-tables.c > @@ -0,0 +1,1688 @@ > +/* > + * Regmap tables for CS47L35 codec > + * > + * Copyright 2015-2016 Cirrus Logic Nit: This needs updating. Apart from that: For my own reference: Acked-for-MFD-by: Lee Jones > + * Author: Piotr Stankiewicz > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#include > +#include > +#include > + > +#include > +#include > + > +#include "madera.h" > + > +static const struct reg_sequence cs47l35_reva_16_patch[] = { > + { 0x460, 0x0c40 }, > + { 0x461, 0xcd1a }, > + { 0x462, 0x0c40 }, > + { 0x463, 0xb53b }, > + { 0x464, 0x0c40 }, > + { 0x465, 0x7503 }, > + { 0x466, 0x0c40 }, > + { 0x467, 0x4a41 }, > + { 0x468, 0x0041 }, > + { 0x469, 0x3491 }, > + { 0x46a, 0x0841 }, > + { 0x46b, 0x1f50 }, > + { 0x46c, 0x0446 }, > + { 0x46d, 0x14ed }, > + { 0x46e, 0x0446 }, > + { 0x46f, 0x1455 }, > + { 0x470, 0x04c6 }, > + { 0x471, 0x1220 }, > + { 0x472, 0x04c6 }, > + { 0x473, 0x040f }, > + { 0x474, 0x04ce }, > + { 0x475, 0x0339 }, > + { 0x476, 0x05df }, > + { 0x477, 0x028f }, > + { 0x478, 0x05df }, > + { 0x479, 0x0209 }, > + { 0x47a, 0x05df }, > + { 0x47b, 0x00cf }, > + { 0x47c, 0x05df }, > + { 0x47d, 0x0001 }, > + { 0x47e, 0x07ff }, > +}; > + > +int cs47l35_patch(struct madera *madera) > +{ > + int ret; > + > + ret = regmap_register_patch(madera->regmap, cs47l35_reva_16_patch, > + ARRAY_SIZE(cs47l35_reva_16_patch)); > + if (ret < 0) > + dev_err(madera->dev, "Error applying patch: %d\n", ret); > + > + return ret; > +} > +EXPORT_SYMBOL_GPL(cs47l35_patch); > + > +static const struct reg_default cs47l35_reg_default[] = { > + { 0x0020, 0x }, /* R32 (0x20) - Tone Generator 1 */ > + { 0x0021, 0x1000 }, /* R33 (0x21) - Tone Generator 2 */ > + { 0x0022, 0x }, /* R34 (0x22) - Tone Generator 3 */ > + { 0x0023, 0x1000 }, /* R35 (0x23) - Tone Generator 4 */ > + { 0x0024, 0x }, /* R36 (0x24) - Tone Generator 5 */ > + { 0x0030, 0x }, /* R48 (0x30) - PWM Drive 1 */ > + { 0x0031, 0x0100 }, /* R49 (0x31) - PWM Drive 2 */ > + { 0x0032, 0x0100 }, /* R50 (0x32) - PWM Drive 3 */ > + { 0x0061, 0x01ff }, /* R97 (0x61) - Sample Rate Sequence Select 1 */ > + { 0x0062, 0x01ff }, /* R98 (0x62) - Sample Rate Sequence Select 2 */ > + { 0x0063, 0x01ff }, /* R99 (0x63) - Sample Rate Sequence Select 3 */ > + { 0x0064, 0x01ff }, /* R100 (0x64) - Sample Rate Sequence Select 4*/ > + { 0x0066, 0x01ff }, /* R102 (0x66) - Always On Triggers Sequence > Select 1*/ > + { 0x0067, 0x01ff }, /* R103 (0x67) - Always On Triggers Sequence > Select 2*/ > + { 0x0090, 0x }, /* R144 (0x90) - Haptics Control 1 */ > + { 0x0091, 0x7fff }, /* R145 (0x91) - Haptics Control 2
Re: [PATCH 03/16] mfd: madera: Register map tables for Cirrus Logic CS47L35
On Wed, 05 Apr 2017, Richard Fitzgerald wrote: > Regmap configuration tables for Cirrus Logic CS47L35 codecs. > > Signed-off-by: Piotr Stankiewicz > Signed-off-by: Richard Fitzgerald > Signed-off-by: Charles Keepax > --- > drivers/mfd/Kconfig |6 + > drivers/mfd/Makefile |3 + > drivers/mfd/cs47l35-tables.c | 1688 > ++ > 3 files changed, 1697 insertions(+) > create mode 100644 drivers/mfd/cs47l35-tables.c > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index f0f9979..5aa62f4 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -226,6 +226,12 @@ config MFD_MADERA_SPI > Support for the Cirrus Logic Madera platform audio SoC > core functionality controlled via SPI. > > +config MFD_CS47L35 > + bool "Cirrus Logic CS47L35" > + depends on MFD_MADERA > + help > + Support for Cirrus Logic CS47L35 Smart Codec > + > config MFD_ASIC3 > bool "Compaq ASIC3" > depends on GPIOLIB && ARM > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index c41f6c9..c14a86d 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -73,6 +73,9 @@ wm8994-objs := wm8994-core.o wm8994-irq.o > wm8994-regmap.o > obj-$(CONFIG_MFD_WM8994) += wm8994.o > > obj-$(CONFIG_MFD_MADERA) += madera-core.o > +ifeq ($(CONFIG_MFD_CS47L35),y) > +obj-$(CONFIG_MFD_MADERA) += cs47l35-tables.o > +endif > obj-$(CONFIG_MFD_MADERA_I2C) += madera-i2c.o > obj-$(CONFIG_MFD_MADERA_SPI) += madera-spi.o > > diff --git a/drivers/mfd/cs47l35-tables.c b/drivers/mfd/cs47l35-tables.c > new file mode 100644 > index 000..1336c60 > --- /dev/null > +++ b/drivers/mfd/cs47l35-tables.c > @@ -0,0 +1,1688 @@ > +/* > + * Regmap tables for CS47L35 codec > + * > + * Copyright 2015-2016 Cirrus Logic Nit: This needs updating. Apart from that: For my own reference: Acked-for-MFD-by: Lee Jones > + * Author: Piotr Stankiewicz > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#include > +#include > +#include > + > +#include > +#include > + > +#include "madera.h" > + > +static const struct reg_sequence cs47l35_reva_16_patch[] = { > + { 0x460, 0x0c40 }, > + { 0x461, 0xcd1a }, > + { 0x462, 0x0c40 }, > + { 0x463, 0xb53b }, > + { 0x464, 0x0c40 }, > + { 0x465, 0x7503 }, > + { 0x466, 0x0c40 }, > + { 0x467, 0x4a41 }, > + { 0x468, 0x0041 }, > + { 0x469, 0x3491 }, > + { 0x46a, 0x0841 }, > + { 0x46b, 0x1f50 }, > + { 0x46c, 0x0446 }, > + { 0x46d, 0x14ed }, > + { 0x46e, 0x0446 }, > + { 0x46f, 0x1455 }, > + { 0x470, 0x04c6 }, > + { 0x471, 0x1220 }, > + { 0x472, 0x04c6 }, > + { 0x473, 0x040f }, > + { 0x474, 0x04ce }, > + { 0x475, 0x0339 }, > + { 0x476, 0x05df }, > + { 0x477, 0x028f }, > + { 0x478, 0x05df }, > + { 0x479, 0x0209 }, > + { 0x47a, 0x05df }, > + { 0x47b, 0x00cf }, > + { 0x47c, 0x05df }, > + { 0x47d, 0x0001 }, > + { 0x47e, 0x07ff }, > +}; > + > +int cs47l35_patch(struct madera *madera) > +{ > + int ret; > + > + ret = regmap_register_patch(madera->regmap, cs47l35_reva_16_patch, > + ARRAY_SIZE(cs47l35_reva_16_patch)); > + if (ret < 0) > + dev_err(madera->dev, "Error applying patch: %d\n", ret); > + > + return ret; > +} > +EXPORT_SYMBOL_GPL(cs47l35_patch); > + > +static const struct reg_default cs47l35_reg_default[] = { > + { 0x0020, 0x }, /* R32 (0x20) - Tone Generator 1 */ > + { 0x0021, 0x1000 }, /* R33 (0x21) - Tone Generator 2 */ > + { 0x0022, 0x }, /* R34 (0x22) - Tone Generator 3 */ > + { 0x0023, 0x1000 }, /* R35 (0x23) - Tone Generator 4 */ > + { 0x0024, 0x }, /* R36 (0x24) - Tone Generator 5 */ > + { 0x0030, 0x }, /* R48 (0x30) - PWM Drive 1 */ > + { 0x0031, 0x0100 }, /* R49 (0x31) - PWM Drive 2 */ > + { 0x0032, 0x0100 }, /* R50 (0x32) - PWM Drive 3 */ > + { 0x0061, 0x01ff }, /* R97 (0x61) - Sample Rate Sequence Select 1 */ > + { 0x0062, 0x01ff }, /* R98 (0x62) - Sample Rate Sequence Select 2 */ > + { 0x0063, 0x01ff }, /* R99 (0x63) - Sample Rate Sequence Select 3 */ > + { 0x0064, 0x01ff }, /* R100 (0x64) - Sample Rate Sequence Select 4*/ > + { 0x0066, 0x01ff }, /* R102 (0x66) - Always On Triggers Sequence > Select 1*/ > + { 0x0067, 0x01ff }, /* R103 (0x67) - Always On Triggers Sequence > Select 2*/ > + { 0x0090, 0x }, /* R144 (0x90) - Haptics Control 1 */ > + { 0x0091, 0x7fff }, /* R145 (0x91) - Haptics Control 2 */ > + { 0x0092, 0x }, /* R146 (0x92) - Haptics phase 1 intensity */ > + { 0x0093, 0x }, /* R147 (0x93) - Haptics phase 1 duration */ > +
[PATCH 03/16] mfd: madera: Register map tables for Cirrus Logic CS47L35
Regmap configuration tables for Cirrus Logic CS47L35 codecs. Signed-off-by: Piotr StankiewiczSigned-off-by: Richard Fitzgerald Signed-off-by: Charles Keepax --- drivers/mfd/Kconfig |6 + drivers/mfd/Makefile |3 + drivers/mfd/cs47l35-tables.c | 1688 ++ 3 files changed, 1697 insertions(+) create mode 100644 drivers/mfd/cs47l35-tables.c diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index f0f9979..5aa62f4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -226,6 +226,12 @@ config MFD_MADERA_SPI Support for the Cirrus Logic Madera platform audio SoC core functionality controlled via SPI. +config MFD_CS47L35 + bool "Cirrus Logic CS47L35" + depends on MFD_MADERA + help + Support for Cirrus Logic CS47L35 Smart Codec + config MFD_ASIC3 bool "Compaq ASIC3" depends on GPIOLIB && ARM diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index c41f6c9..c14a86d 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -73,6 +73,9 @@ wm8994-objs := wm8994-core.o wm8994-irq.o wm8994-regmap.o obj-$(CONFIG_MFD_WM8994) += wm8994.o obj-$(CONFIG_MFD_MADERA) += madera-core.o +ifeq ($(CONFIG_MFD_CS47L35),y) +obj-$(CONFIG_MFD_MADERA) += cs47l35-tables.o +endif obj-$(CONFIG_MFD_MADERA_I2C) += madera-i2c.o obj-$(CONFIG_MFD_MADERA_SPI) += madera-spi.o diff --git a/drivers/mfd/cs47l35-tables.c b/drivers/mfd/cs47l35-tables.c new file mode 100644 index 000..1336c60 --- /dev/null +++ b/drivers/mfd/cs47l35-tables.c @@ -0,0 +1,1688 @@ +/* + * Regmap tables for CS47L35 codec + * + * Copyright 2015-2016 Cirrus Logic + * + * Author: Piotr Stankiewicz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include + +#include +#include + +#include "madera.h" + +static const struct reg_sequence cs47l35_reva_16_patch[] = { + { 0x460, 0x0c40 }, + { 0x461, 0xcd1a }, + { 0x462, 0x0c40 }, + { 0x463, 0xb53b }, + { 0x464, 0x0c40 }, + { 0x465, 0x7503 }, + { 0x466, 0x0c40 }, + { 0x467, 0x4a41 }, + { 0x468, 0x0041 }, + { 0x469, 0x3491 }, + { 0x46a, 0x0841 }, + { 0x46b, 0x1f50 }, + { 0x46c, 0x0446 }, + { 0x46d, 0x14ed }, + { 0x46e, 0x0446 }, + { 0x46f, 0x1455 }, + { 0x470, 0x04c6 }, + { 0x471, 0x1220 }, + { 0x472, 0x04c6 }, + { 0x473, 0x040f }, + { 0x474, 0x04ce }, + { 0x475, 0x0339 }, + { 0x476, 0x05df }, + { 0x477, 0x028f }, + { 0x478, 0x05df }, + { 0x479, 0x0209 }, + { 0x47a, 0x05df }, + { 0x47b, 0x00cf }, + { 0x47c, 0x05df }, + { 0x47d, 0x0001 }, + { 0x47e, 0x07ff }, +}; + +int cs47l35_patch(struct madera *madera) +{ + int ret; + + ret = regmap_register_patch(madera->regmap, cs47l35_reva_16_patch, + ARRAY_SIZE(cs47l35_reva_16_patch)); + if (ret < 0) + dev_err(madera->dev, "Error applying patch: %d\n", ret); + + return ret; +} +EXPORT_SYMBOL_GPL(cs47l35_patch); + +static const struct reg_default cs47l35_reg_default[] = { + { 0x0020, 0x }, /* R32 (0x20) - Tone Generator 1 */ + { 0x0021, 0x1000 }, /* R33 (0x21) - Tone Generator 2 */ + { 0x0022, 0x }, /* R34 (0x22) - Tone Generator 3 */ + { 0x0023, 0x1000 }, /* R35 (0x23) - Tone Generator 4 */ + { 0x0024, 0x }, /* R36 (0x24) - Tone Generator 5 */ + { 0x0030, 0x }, /* R48 (0x30) - PWM Drive 1 */ + { 0x0031, 0x0100 }, /* R49 (0x31) - PWM Drive 2 */ + { 0x0032, 0x0100 }, /* R50 (0x32) - PWM Drive 3 */ + { 0x0061, 0x01ff }, /* R97 (0x61) - Sample Rate Sequence Select 1 */ + { 0x0062, 0x01ff }, /* R98 (0x62) - Sample Rate Sequence Select 2 */ + { 0x0063, 0x01ff }, /* R99 (0x63) - Sample Rate Sequence Select 3 */ + { 0x0064, 0x01ff }, /* R100 (0x64) - Sample Rate Sequence Select 4*/ + { 0x0066, 0x01ff }, /* R102 (0x66) - Always On Triggers Sequence Select 1*/ + { 0x0067, 0x01ff }, /* R103 (0x67) - Always On Triggers Sequence Select 2*/ + { 0x0090, 0x }, /* R144 (0x90) - Haptics Control 1 */ + { 0x0091, 0x7fff }, /* R145 (0x91) - Haptics Control 2 */ + { 0x0092, 0x }, /* R146 (0x92) - Haptics phase 1 intensity */ + { 0x0093, 0x }, /* R147 (0x93) - Haptics phase 1 duration */ + { 0x0094, 0x }, /* R148 (0x94) - Haptics phase 2 intensity */ + { 0x0095, 0x }, /* R149 (0x95) - Haptics phase 2 duration
[PATCH 03/16] mfd: madera: Register map tables for Cirrus Logic CS47L35
Regmap configuration tables for Cirrus Logic CS47L35 codecs. Signed-off-by: Piotr Stankiewicz Signed-off-by: Richard Fitzgerald Signed-off-by: Charles Keepax --- drivers/mfd/Kconfig |6 + drivers/mfd/Makefile |3 + drivers/mfd/cs47l35-tables.c | 1688 ++ 3 files changed, 1697 insertions(+) create mode 100644 drivers/mfd/cs47l35-tables.c diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index f0f9979..5aa62f4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -226,6 +226,12 @@ config MFD_MADERA_SPI Support for the Cirrus Logic Madera platform audio SoC core functionality controlled via SPI. +config MFD_CS47L35 + bool "Cirrus Logic CS47L35" + depends on MFD_MADERA + help + Support for Cirrus Logic CS47L35 Smart Codec + config MFD_ASIC3 bool "Compaq ASIC3" depends on GPIOLIB && ARM diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index c41f6c9..c14a86d 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -73,6 +73,9 @@ wm8994-objs := wm8994-core.o wm8994-irq.o wm8994-regmap.o obj-$(CONFIG_MFD_WM8994) += wm8994.o obj-$(CONFIG_MFD_MADERA) += madera-core.o +ifeq ($(CONFIG_MFD_CS47L35),y) +obj-$(CONFIG_MFD_MADERA) += cs47l35-tables.o +endif obj-$(CONFIG_MFD_MADERA_I2C) += madera-i2c.o obj-$(CONFIG_MFD_MADERA_SPI) += madera-spi.o diff --git a/drivers/mfd/cs47l35-tables.c b/drivers/mfd/cs47l35-tables.c new file mode 100644 index 000..1336c60 --- /dev/null +++ b/drivers/mfd/cs47l35-tables.c @@ -0,0 +1,1688 @@ +/* + * Regmap tables for CS47L35 codec + * + * Copyright 2015-2016 Cirrus Logic + * + * Author: Piotr Stankiewicz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include + +#include +#include + +#include "madera.h" + +static const struct reg_sequence cs47l35_reva_16_patch[] = { + { 0x460, 0x0c40 }, + { 0x461, 0xcd1a }, + { 0x462, 0x0c40 }, + { 0x463, 0xb53b }, + { 0x464, 0x0c40 }, + { 0x465, 0x7503 }, + { 0x466, 0x0c40 }, + { 0x467, 0x4a41 }, + { 0x468, 0x0041 }, + { 0x469, 0x3491 }, + { 0x46a, 0x0841 }, + { 0x46b, 0x1f50 }, + { 0x46c, 0x0446 }, + { 0x46d, 0x14ed }, + { 0x46e, 0x0446 }, + { 0x46f, 0x1455 }, + { 0x470, 0x04c6 }, + { 0x471, 0x1220 }, + { 0x472, 0x04c6 }, + { 0x473, 0x040f }, + { 0x474, 0x04ce }, + { 0x475, 0x0339 }, + { 0x476, 0x05df }, + { 0x477, 0x028f }, + { 0x478, 0x05df }, + { 0x479, 0x0209 }, + { 0x47a, 0x05df }, + { 0x47b, 0x00cf }, + { 0x47c, 0x05df }, + { 0x47d, 0x0001 }, + { 0x47e, 0x07ff }, +}; + +int cs47l35_patch(struct madera *madera) +{ + int ret; + + ret = regmap_register_patch(madera->regmap, cs47l35_reva_16_patch, + ARRAY_SIZE(cs47l35_reva_16_patch)); + if (ret < 0) + dev_err(madera->dev, "Error applying patch: %d\n", ret); + + return ret; +} +EXPORT_SYMBOL_GPL(cs47l35_patch); + +static const struct reg_default cs47l35_reg_default[] = { + { 0x0020, 0x }, /* R32 (0x20) - Tone Generator 1 */ + { 0x0021, 0x1000 }, /* R33 (0x21) - Tone Generator 2 */ + { 0x0022, 0x }, /* R34 (0x22) - Tone Generator 3 */ + { 0x0023, 0x1000 }, /* R35 (0x23) - Tone Generator 4 */ + { 0x0024, 0x }, /* R36 (0x24) - Tone Generator 5 */ + { 0x0030, 0x }, /* R48 (0x30) - PWM Drive 1 */ + { 0x0031, 0x0100 }, /* R49 (0x31) - PWM Drive 2 */ + { 0x0032, 0x0100 }, /* R50 (0x32) - PWM Drive 3 */ + { 0x0061, 0x01ff }, /* R97 (0x61) - Sample Rate Sequence Select 1 */ + { 0x0062, 0x01ff }, /* R98 (0x62) - Sample Rate Sequence Select 2 */ + { 0x0063, 0x01ff }, /* R99 (0x63) - Sample Rate Sequence Select 3 */ + { 0x0064, 0x01ff }, /* R100 (0x64) - Sample Rate Sequence Select 4*/ + { 0x0066, 0x01ff }, /* R102 (0x66) - Always On Triggers Sequence Select 1*/ + { 0x0067, 0x01ff }, /* R103 (0x67) - Always On Triggers Sequence Select 2*/ + { 0x0090, 0x }, /* R144 (0x90) - Haptics Control 1 */ + { 0x0091, 0x7fff }, /* R145 (0x91) - Haptics Control 2 */ + { 0x0092, 0x }, /* R146 (0x92) - Haptics phase 1 intensity */ + { 0x0093, 0x }, /* R147 (0x93) - Haptics phase 1 duration */ + { 0x0094, 0x }, /* R148 (0x94) - Haptics phase 2 intensity */ + { 0x0095, 0x }, /* R149 (0x95) - Haptics phase 2 duration */ + { 0x0096, 0x }, /* R150 (0x96) - Haptics phase 3 intensity */ + { 0x0097, 0x }, /* R151 (0x97) - Haptics