Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: mc13xxx: Add support for mc34708

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Marc Reilly <marc@cpdesign.com.au>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

authored by

Uwe Kleine-König and committed by
Samuel Ortiz
0312e024 cd0f34b0

+33 -1
+21
drivers/mfd/mc13xxx-core.c
··· 119 119 #define MC13XXX_REVISION_FAB (0x03 << 11) 120 120 #define MC13XXX_REVISION_ICIDCODE (0x3f << 13) 121 121 122 + #define MC34708_REVISION_REVMETAL (0x07 << 0) 123 + #define MC34708_REVISION_REVFULL (0x07 << 3) 124 + #define MC34708_REVISION_FIN (0x07 << 6) 125 + #define MC34708_REVISION_FAB (0x07 << 9) 126 + 122 127 #define MC13XXX_ADC1 44 123 128 #define MC13XXX_ADC1_ADEN (1 << 0) 124 129 #define MC13XXX_ADC1_RAND (1 << 1) ··· 429 424 maskval(revision, MC13XXX_REVISION_ICIDCODE)); 430 425 } 431 426 427 + static void mc34708_print_revision(struct mc13xxx *mc13xxx, u32 revision) 428 + { 429 + dev_info(mc13xxx->dev, "%s: rev %d.%d, fin: %d, fab: %d\n", 430 + mc13xxx->variant->name, 431 + maskval(revision, MC34708_REVISION_REVFULL), 432 + maskval(revision, MC34708_REVISION_REVMETAL), 433 + maskval(revision, MC34708_REVISION_FIN), 434 + maskval(revision, MC34708_REVISION_FAB)); 435 + } 436 + 432 437 /* These are only exported for mc13xxx-i2c and mc13xxx-spi */ 433 438 struct mc13xxx_variant mc13xxx_variant_mc13783 = { 434 439 .name = "mc13783", ··· 451 436 .print_revision = mc13xxx_print_revision, 452 437 }; 453 438 EXPORT_SYMBOL_GPL(mc13xxx_variant_mc13892); 439 + 440 + struct mc13xxx_variant mc13xxx_variant_mc34708 = { 441 + .name = "mc34708", 442 + .print_revision = mc34708_print_revision, 443 + }; 444 + EXPORT_SYMBOL_GPL(mc13xxx_variant_mc34708); 454 445 455 446 static const char *mc13xxx_get_chipname(struct mc13xxx *mc13xxx) 456 447 {
+6
drivers/mfd/mc13xxx-i2c.c
··· 26 26 .name = "mc13892", 27 27 .driver_data = (kernel_ulong_t)&mc13xxx_variant_mc13892, 28 28 }, { 29 + .name = "mc34708", 30 + .driver_data = (kernel_ulong_t)&mc13xxx_variant_mc34708, 31 + }, { 29 32 /* sentinel */ 30 33 } 31 34 }; ··· 38 35 { 39 36 .compatible = "fsl,mc13892", 40 37 .data = &mc13xxx_variant_mc13892, 38 + }, { 39 + .compatible = "fsl,mc34708", 40 + .data = &mc13xxx_variant_mc34708, 41 41 }, { 42 42 /* sentinel */ 43 43 }
+4
drivers/mfd/mc13xxx-spi.c
··· 33 33 .name = "mc13892", 34 34 .driver_data = (kernel_ulong_t)&mc13xxx_variant_mc13892, 35 35 }, { 36 + .name = "mc34708", 37 + .driver_data = (kernel_ulong_t)&mc13xxx_variant_mc34708, 38 + }, { 36 39 /* sentinel */ 37 40 } 38 41 }; ··· 44 41 static const struct of_device_id mc13xxx_dt_ids[] = { 45 42 { .compatible = "fsl,mc13783", .data = &mc13xxx_variant_mc13783, }, 46 43 { .compatible = "fsl,mc13892", .data = &mc13xxx_variant_mc13892, }, 44 + { .compatible = "fsl,mc34708", .data = &mc13xxx_variant_mc34708, }, 47 45 { /* sentinel */ } 48 46 }; 49 47 MODULE_DEVICE_TABLE(of, mc13xxx_dt_ids);
+2 -1
drivers/mfd/mc13xxx.h
··· 24 24 25 25 extern struct mc13xxx_variant 26 26 mc13xxx_variant_mc13783, 27 - mc13xxx_variant_mc13892; 27 + mc13xxx_variant_mc13892, 28 + mc13xxx_variant_mc34708; 28 29 29 30 struct mc13xxx { 30 31 struct regmap *regmap;