Re: [PATCH v4 6/6 RESEND] mfd: motorola-cpcap: add support for Mot CPCAP composition
From: Lee Jones
Date: Thu May 07 2026 - 10:12:25 EST
On Tue, 28 Apr 2026, Svyatoslav Ryhel wrote:
> Add a MFD subdevice composition used in Tegra20 based Mot board
> (Motorola Atrix 4G and Droid X2).
>
> Signed-off-by: Svyatoslav Ryhel <clamor95@xxxxxxxxx>
> ---
> drivers/mfd/motorola-cpcap.c | 50 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 50 insertions(+)
>
> diff --git a/drivers/mfd/motorola-cpcap.c b/drivers/mfd/motorola-cpcap.c
> index 516d1e33affa..fdec92f5c6b0 100644
> --- a/drivers/mfd/motorola-cpcap.c
> +++ b/drivers/mfd/motorola-cpcap.c
> @@ -335,6 +335,54 @@ static const struct cpcap_chip_data cpcap_mapphone_data = {
> .num_devices = ARRAY_SIZE(cpcap_mapphone_mfd_devices),
> };
>
> +/*
> + * The Mot board features a USB-PHY and charger similar to the ones in
> + * Mapphone; however, because Mot is based on Tegra20, it is incompatible
> + * with the existing implementation, which is tightly interconnected with
> + * the OMAP USB PHY.
> + */
> +static const struct mfd_cell cpcap_mot_mfd_devices[] = {
> + {
> + .name = "cpcap_adc",
> + .of_compatible = "motorola,mot-cpcap-adc",
> + }, {
> + .name = "cpcap_battery",
> + .of_compatible = "motorola,cpcap-battery",
> + }, {
> + .name = "cpcap-regulator",
> + .of_compatible = "motorola,mot-cpcap-regulator",
> + }, {
> + .name = "cpcap-rtc",
> + .of_compatible = "motorola,cpcap-rtc",
> + }, {
> + .name = "cpcap-pwrbutton",
> + .of_compatible = "motorola,cpcap-pwrbutton",
> + }, {
> + .name = "cpcap-led",
> + .id = 0,
> + .of_compatible = "motorola,cpcap-led-red",
> + }, {
> + .name = "cpcap-led",
> + .id = 1,
> + .of_compatible = "motorola,cpcap-led-green",
> + }, {
> + .name = "cpcap-led",
> + .id = 2,
> + .of_compatible = "motorola,cpcap-led-blue",
> + }, {
> + .name = "cpcap-led",
> + .id = 3,
> + .of_compatible = "motorola,cpcap-led-adl",
MFD_CELL_OF() for all.
> + }, {
> + .name = "cpcap-codec",
> + },
MFD_CELL_NAME()
> +};
> +
> +static const struct cpcap_chip_data cpcap_mot_data = {
> + .mfd_devices = cpcap_mot_mfd_devices,
> + .num_devices = ARRAY_SIZE(cpcap_mot_mfd_devices),
> +};
> +
> static int cpcap_probe(struct spi_device *spi)
> {
> struct cpcap_ddata *cpcap;
> @@ -389,6 +437,7 @@ static int cpcap_probe(struct spi_device *spi)
> static const struct of_device_id cpcap_of_match[] = {
> { .compatible = "motorola,cpcap", .data = &cpcap_default_data },
> { .compatible = "motorola,mapphone-cpcap", .data = &cpcap_mapphone_data },
> + { .compatible = "motorola,mot-cpcap", .data = &cpcap_mot_data },
> { /* sentinel */ }
> };
> MODULE_DEVICE_TABLE(of, cpcap_of_match);
> @@ -396,6 +445,7 @@ MODULE_DEVICE_TABLE(of, cpcap_of_match);
> static const struct spi_device_id cpcap_spi_ids[] = {
> { .name = "cpcap", .driver_data = (kernel_ulong_t)&cpcap_default_data },
> { .name = "mapphone-cpcap", .driver_data = (kernel_ulong_t)&cpcap_mapphone_data },
> + { .name = "mot-cpcap", .driver_data = (kernel_ulong_t)&cpcap_mot_data },
> { /* sentinel */ }
> };
> MODULE_DEVICE_TABLE(spi, cpcap_spi_ids);
> --
> 2.51.0
>
--
Lee Jones