Skip to content

Commit 672be62

Browse files
qi-cirrusstuhenderson
authored andcommitted
mfd: tacna: Add cs48l33 support
Change-Id: I2390da4b56e87d85bd72d71cbe96fd049d457457 Signed-off-by: Qi Zhou <[email protected]>
1 parent a1010da commit 672be62

File tree

5 files changed

+36
-0
lines changed

5 files changed

+36
-0
lines changed

drivers/mfd/Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,12 @@ config MFD_CS48L32
252252
help
253253
Support for Cirrus Logic CS48L32 Smart Codec
254254

255+
config MFD_CS48L33
256+
bool "Cirrus Logic CS48L33"
257+
depends on MFD_TACNA
258+
help
259+
Support for Cirrus Logic CS48L33 Smart Codec
260+
255261
config MFD_ASIC3
256262
bool "Compaq ASIC3"
257263
depends on GPIOLIB && ARM

drivers/mfd/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ endif
5050
ifeq ($(CONFIG_MFD_CS48L32),y)
5151
obj-$(CONFIG_MFD_TACNA) += cs48l32-tables.o
5252
endif
53+
ifeq ($(CONFIG_MFD_CS48L33),y)
54+
obj-$(CONFIG_MFD_TACNA) += cs48l32-tables.o
55+
endif
5356
obj-$(CONFIG_MFD_TACNA_SPI) += tacna-spi.o
5457

5558
obj-$(CONFIG_MFD_ARIZONA) += arizona-core.o

drivers/mfd/tacna-core.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
#define CS47L96_SILICON_ID 0x47a97
3636
#define CS48L32_SILICON_ID 0x48a32
37+
#define CS48L33_SILICON_ID 0x48a33
3738

3839
#define TACNA_32K_MCLK1 0
3940
#define TACNA_32K_MCLK2 1
@@ -110,6 +111,8 @@ const char *tacna_name_from_type(enum tacna_type type)
110111
return "CS47L97";
111112
case CS48L32:
112113
return "CS48L32";
114+
case CS48L33:
115+
return "CS48L33";
113116
default:
114117
return "Unknown";
115118
}
@@ -292,6 +295,7 @@ unsigned int tacna_get_num_micbias(struct tacna *tacna)
292295
case CS47L97:
293296
return 2;
294297
case CS48L32:
298+
case CS48L33:
295299
return 1;
296300
default:
297301
return 0;
@@ -313,6 +317,7 @@ unsigned int tacna_get_num_childbias(struct tacna *tacna, unsigned int micbias)
313317
return 0;
314318
}
315319
case CS48L32:
320+
case CS48L33:
316321
switch (micbias) {
317322
case 0:
318323
return 3;
@@ -330,6 +335,7 @@ const struct of_device_id tacna_of_match[] = {
330335
{ .compatible = "cirrus,cs47l96", .data = (void *)CS47L96 },
331336
{ .compatible = "cirrus,cs47l97", .data = (void *)CS47L97 },
332337
{ .compatible = "cirrus,cs48l32", .data = (void *)CS48L32 },
338+
{ .compatible = "cirrus,cs48l33", .data = (void *)CS48L33 },
333339
{},
334340
};
335341
EXPORT_SYMBOL_GPL(tacna_of_match);
@@ -558,6 +564,7 @@ static int tacna_configure_clk32k(struct tacna *tacna)
558564
/* Default to something typical for the part */
559565
switch (tacna->type) {
560566
case CS48L32:
567+
case CS48L33:
561568
mclk_src = TACNA_32K_MCLK1;
562569
break;
563570
default:
@@ -724,6 +731,7 @@ int tacna_dev_init(struct tacna *tacna)
724731
switch (hwid) {
725732
case CS47L96_SILICON_ID:
726733
case CS48L32_SILICON_ID:
734+
case CS48L33_SILICON_ID:
727735
break;
728736
default:
729737
dev_err(tacna->dev, "Unknown device ID: %x\n", hwid);
@@ -777,6 +785,19 @@ int tacna_dev_init(struct tacna *tacna)
777785
}
778786
}
779787
break;
788+
case CS48L33_SILICON_ID:
789+
if (IS_ENABLED(CONFIG_MFD_CS48L33)) {
790+
switch (tacna->type) {
791+
case CS48L33:
792+
patch_fn = cs48l32_patch;
793+
mfd_devs = cs48l32_devs;
794+
n_devs = ARRAY_SIZE(cs48l32_devs);
795+
break;
796+
default:
797+
break;
798+
}
799+
}
800+
break;
780801
default:
781802
break;
782803
}

drivers/mfd/tacna-spi.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ static int tacna_spi_probe(struct spi_device *spi)
4343
if (IS_ENABLED(CONFIG_MFD_CS48L32))
4444
regmap_init_fn = cs48l32_init_spi_regmap;
4545
break;
46+
case CS48L33:
47+
if (IS_ENABLED(CONFIG_MFD_CS48L33))
48+
regmap_init_fn = cs48l32_init_spi_regmap;
49+
break;
4650
default:
4751
dev_err(&spi->dev, "Unknown Tacna SPI device type %ld\n", type);
4852
return -EINVAL;
@@ -87,6 +91,7 @@ static const struct spi_device_id tacna_spi_ids[] = {
8791
{ "cs47l96", CS47L96 },
8892
{ "cs47l97", CS47L97 },
8993
{ "cs48l32", CS48L32 },
94+
{ "cs48l33", CS48L33 },
9095
{ },
9196
};
9297
MODULE_DEVICE_TABLE(spi, tacna_spi_ids);

include/linux/mfd/tacna/core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ enum tacna_type {
2323
CS47L96 = 4,
2424
CS47L97 = 5,
2525
CS48L32 = 6,
26+
CS48L33 = 7,
2627
};
2728

2829
#define TACNA_MAX_CORE_SUPPLIES 2

0 commit comments

Comments
 (0)