mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
- New Drivers
- Add Cirrus Logic Madera Codec (CS47L35, CS47L85 and CS47L90/91) driver
- Add ChromeOS EC CEC driver
- Add ROHM BD71837 PMIC driver
- New Device Support
- Add support for Dialog Semi DA9063L PMIC variant to DA9063
- Add support for Intel Ice Lake to Intel-PLSS-PCI
- Add support for X-Powers AXP806 to AXP20x
- New Functionality
- Add support for USB Charging to the ChromeOS Embedded Controller
- Add support for HDMI CEC to the ChromeOS Embedded Controller
- Add support for HDMI CEC to Intel HDMI
- Add support for accessory detection to Madera devices
- Allow individual pins to be configured via DT' wlf,csnaddr-pd
- Provide legacy platform specific EEPROM/Watchdog commands; rave-sp
- Fix-ups
- Trivial renaming/spelling fixes; cros_ec, da9063-*
- Convert to Managed Resources (devm_*); da9063-*, ti_am335x_tscadc
- Transition to helper macros/functions; da9063-*
- Constify; kempld-core
- Improve error path/messages; wm8994-core
- Disable IRQs locally instead of relying on USB subsystem; dln2
- Remove unused code; rave-sp
- New exports; sec-core
- Bug Fixes
- Fix possible false I2C transaction error; arizona-core
- Fix declared memory area size; hi655x-pmic
- Fix checksum type; rave-sp
- Fix incorrect default serial port configuration: rave-sp
- Fix incorrect coherent DMA mask for sub-devices; sm501
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEdrbJNaO+IJqU8IdIUa+KL4f8d2EFAlt6fm8ACgkQUa+KL4f8
d2H8qA/8CLIKKEyc3CiQIF4LqmOPn+P20gSlnNdDFGHV+ZpVryL6qKItDy76nbQS
+GrPCmhADDn7N224ENlv4TYsB1txr7iZvyNr6W7F0fbdTLq5Fl2+6WIB3NnopPPK
MGhzR2jikfuYGwEG+BG3efvTnrjoi+NPbNPHDdoegOiy/Q1R8PhjMKh10xWo3pgG
0TeZVg61ztfewAiebieMixNz+ehzFKK959Lsa7neV2ZsstBbM8B44UpXmLF5JLYe
SR1ai5etSPBLxEeTXxlE+oG+fnDWk9Eyile7z1Nwg4et9OiXdyqAXBoA+BNDj2N2
N8vHuU79pSra+XGbka/7Kyz8sXjb4u92mJlc1wDcsCF+hX+wGEmwkEUb0S4YEtOH
1POi4YuIq0WF1oLSgCla/Pui0OQPIZaT31XhInYLV7rAX+MPgH0cUuLDsmzcg4ut
C6RvoSzWiGA2JVqlALExSDtAkWUoZLjYkqnPYmZwGs25xsGUqJmiw1E73HI0OWr/
EJuKQbeq/bOmRPqbbwO7z7peZJHOt6j344VCXBdP/sB7d/lR1sEGpxC03MIogHrA
BuiPyfDXTF1NB/+ZPBFbSG2Xhcg51yL4ddRa1sMntP6J4Ht1dW7TOpLI21Yu3eRp
jzKnA9DRa/LPUvoR1y+C2LxDeBcT5qFMg4mZedOgio/C0vCXvus=
=4Yj4
-----END PGP SIGNATURE-----
Merge tag 'mfd-next-4.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD updates from Lee Jones:
"New Drivers:
- Add Cirrus Logic Madera Codec (CS47L35, CS47L85 and CS47L90/91) driver
- Add ChromeOS EC CEC driver
- Add ROHM BD71837 PMIC driver
New Device Support:
- Add support for Dialog Semi DA9063L PMIC variant to DA9063
- Add support for Intel Ice Lake to Intel-PLSS-PCI
- Add support for X-Powers AXP806 to AXP20x
New Functionality:
- Add support for USB Charging to the ChromeOS Embedded Controller
- Add support for HDMI CEC to the ChromeOS Embedded Controller
- Add support for HDMI CEC to Intel HDMI
- Add support for accessory detection to Madera devices
- Allow individual pins to be configured via DT' wlf,csnaddr-pd
- Provide legacy platform specific EEPROM/Watchdog commands; rave-sp
Fix-upsL
- Trivial renaming/spelling fixes; cros_ec, da9063-*
- Convert to Managed Resources (devm_*); da9063-*, ti_am335x_tscadc
- Transition to helper macros/functions; da9063-*
- Constify; kempld-core
- Improve error path/messages; wm8994-core
- Disable IRQs locally instead of relying on USB subsystem; dln2
- Remove unused code; rave-sp
- New exports; sec-core
Bug Fixes:
- Fix possible false I2C transaction error; arizona-core
- Fix declared memory area size; hi655x-pmic
- Fix checksum type; rave-sp
- Fix incorrect default serial port configuration: rave-sp
- Fix incorrect coherent DMA mask for sub-devices; sm501"
* tag 'mfd-next-4.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (60 commits)
mfd: madera: Add register definitions for accessory detect
mfd: sm501: Set coherent_dma_mask when creating subdevices
mfd: bd71837: Devicetree bindings for ROHM BD71837 PMIC
mfd: bd71837: Core driver for ROHM BD71837 PMIC
media: platform: cros-ec-cec: Fix dependency on MFD_CROS_EC
mfd: sec-core: Export OF module alias table
mfd: as3722: Disable auto-power-on when AC OK
mfd: axp20x: Support AXP806 in I2C mode
mfd: axp20x: Add self-working mode support for AXP806
dt-bindings: mfd: axp20x: Add "self-working" mode for AXP806
mfd: wm8994: Allow to configure CS/ADDR Pulldown from dts
mfd: wm8994: Allow to configure Speaker Mode Pullup from dts
mfd: rave-sp: Emulate CMD_GET_STATUS on device that don't support it
mfd: rave-sp: Add legacy watchdog ping command translation
mfd: rave-sp: Add legacy EEPROM access command translation
mfd: rave-sp: Initialize flow control and parity of the port
mfd: rave-sp: Fix incorrectly specified checksum type
mfd: rave-sp: Remove unused defines
mfd: hi655x: Fix regmap area declared size for hi655x
mfd: ti_am335x_tscadc: Fix struct clk memory leak
...
This commit is contained in:
commit
532c2b926d
77 changed files with 16124 additions and 460 deletions
|
|
@ -361,6 +361,7 @@ source "drivers/pinctrl/vt8500/Kconfig"
|
|||
source "drivers/pinctrl/mediatek/Kconfig"
|
||||
source "drivers/pinctrl/zte/Kconfig"
|
||||
source "drivers/pinctrl/meson/Kconfig"
|
||||
source "drivers/pinctrl/cirrus/Kconfig"
|
||||
|
||||
config PINCTRL_XWAY
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -64,3 +64,4 @@ obj-$(CONFIG_PINCTRL_UNIPHIER) += uniphier/
|
|||
obj-$(CONFIG_ARCH_VT8500) += vt8500/
|
||||
obj-y += mediatek/
|
||||
obj-$(CONFIG_PINCTRL_ZX) += zte/
|
||||
obj-y += cirrus/
|
||||
|
|
|
|||
14
drivers/pinctrl/cirrus/Kconfig
Normal file
14
drivers/pinctrl/cirrus/Kconfig
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# This is all selected by the Madera MFD driver Kconfig options
|
||||
config PINCTRL_MADERA
|
||||
tristate
|
||||
select PINMUX
|
||||
select GENERIC_PINCONF
|
||||
|
||||
config PINCTRL_CS47L35
|
||||
bool
|
||||
|
||||
config PINCTRL_CS47L85
|
||||
bool
|
||||
|
||||
config PINCTRL_CS47L90
|
||||
bool
|
||||
13
drivers/pinctrl/cirrus/Makefile
Normal file
13
drivers/pinctrl/cirrus/Makefile
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Cirrus Logic pinctrl drivers
|
||||
pinctrl-madera-objs := pinctrl-madera-core.o
|
||||
ifeq ($(CONFIG_PINCTRL_CS47L35),y)
|
||||
pinctrl-madera-objs += pinctrl-cs47l35.o
|
||||
endif
|
||||
ifeq ($(CONFIG_PINCTRL_CS47L85),y)
|
||||
pinctrl-madera-objs += pinctrl-cs47l85.o
|
||||
endif
|
||||
ifeq ($(CONFIG_PINCTRL_CS47L90),y)
|
||||
pinctrl-madera-objs += pinctrl-cs47l90.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_PINCTRL_MADERA) += pinctrl-madera.o
|
||||
45
drivers/pinctrl/cirrus/pinctrl-cs47l35.c
Normal file
45
drivers/pinctrl/cirrus/pinctrl-cs47l35.c
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Pinctrl for Cirrus Logic CS47L35
|
||||
*
|
||||
* Copyright (C) 2016-2017 Cirrus Logic
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; version 2.
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/mfd/madera/core.h>
|
||||
|
||||
#include "pinctrl-madera.h"
|
||||
|
||||
/*
|
||||
* The alt func groups are the most commonly used functions we place these at
|
||||
* the lower function indexes for convenience, and the less commonly used gpio
|
||||
* functions at higher indexes.
|
||||
*
|
||||
* To stay consistent with the datasheet the function names are the same as
|
||||
* the group names for that function's pins
|
||||
*
|
||||
* Note - all 1 less than in datasheet because these are zero-indexed
|
||||
*/
|
||||
static const unsigned int cs47l35_aif3_pins[] = { 0, 1, 2, 3 };
|
||||
static const unsigned int cs47l35_spk_pins[] = { 4, 5 };
|
||||
static const unsigned int cs47l35_aif1_pins[] = { 7, 8, 9, 10 };
|
||||
static const unsigned int cs47l35_aif2_pins[] = { 11, 12, 13, 14 };
|
||||
static const unsigned int cs47l35_mif1_pins[] = { 6, 15 };
|
||||
|
||||
static const struct madera_pin_groups cs47l35_pin_groups[] = {
|
||||
{ "aif1", cs47l35_aif1_pins, ARRAY_SIZE(cs47l35_aif1_pins) },
|
||||
{ "aif2", cs47l35_aif2_pins, ARRAY_SIZE(cs47l35_aif2_pins) },
|
||||
{ "aif3", cs47l35_aif3_pins, ARRAY_SIZE(cs47l35_aif3_pins) },
|
||||
{ "mif1", cs47l35_mif1_pins, ARRAY_SIZE(cs47l35_mif1_pins) },
|
||||
{ "pdmspk1", cs47l35_spk_pins, ARRAY_SIZE(cs47l35_spk_pins) },
|
||||
};
|
||||
|
||||
const struct madera_pin_chip cs47l35_pin_chip = {
|
||||
.n_pins = CS47L35_NUM_GPIOS,
|
||||
.pin_groups = cs47l35_pin_groups,
|
||||
.n_pin_groups = ARRAY_SIZE(cs47l35_pin_groups),
|
||||
};
|
||||
59
drivers/pinctrl/cirrus/pinctrl-cs47l85.c
Normal file
59
drivers/pinctrl/cirrus/pinctrl-cs47l85.c
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Pinctrl for Cirrus Logic CS47L85
|
||||
*
|
||||
* Copyright (C) 2016-2017 Cirrus Logic
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; version 2.
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/mfd/madera/core.h>
|
||||
|
||||
#include "pinctrl-madera.h"
|
||||
|
||||
/*
|
||||
* The alt func groups are the most commonly used functions we place these at
|
||||
* the lower function indexes for convenience, and the less commonly used gpio
|
||||
* functions at higher indexes.
|
||||
*
|
||||
* To stay consistent with the datasheet the function names are the same as
|
||||
* the group names for that function's pins
|
||||
*
|
||||
* Note - all 1 less than in datasheet because these are zero-indexed
|
||||
*/
|
||||
static const unsigned int cs47l85_mif1_pins[] = { 8, 9 };
|
||||
static const unsigned int cs47l85_mif2_pins[] = { 10, 11 };
|
||||
static const unsigned int cs47l85_mif3_pins[] = { 12, 13 };
|
||||
static const unsigned int cs47l85_aif1_pins[] = { 14, 15, 16, 17 };
|
||||
static const unsigned int cs47l85_aif2_pins[] = { 18, 19, 20, 21 };
|
||||
static const unsigned int cs47l85_aif3_pins[] = { 22, 23, 24, 25 };
|
||||
static const unsigned int cs47l85_aif4_pins[] = { 26, 27, 28, 29 };
|
||||
static const unsigned int cs47l85_dmic4_pins[] = { 30, 31 };
|
||||
static const unsigned int cs47l85_dmic5_pins[] = { 32, 33 };
|
||||
static const unsigned int cs47l85_dmic6_pins[] = { 34, 35 };
|
||||
static const unsigned int cs47l85_spk1_pins[] = { 36, 38 };
|
||||
static const unsigned int cs47l85_spk2_pins[] = { 37, 39 };
|
||||
|
||||
static const struct madera_pin_groups cs47l85_pin_groups[] = {
|
||||
{ "aif1", cs47l85_aif1_pins, ARRAY_SIZE(cs47l85_aif1_pins) },
|
||||
{ "aif2", cs47l85_aif2_pins, ARRAY_SIZE(cs47l85_aif2_pins) },
|
||||
{ "aif3", cs47l85_aif3_pins, ARRAY_SIZE(cs47l85_aif3_pins) },
|
||||
{ "aif4", cs47l85_aif4_pins, ARRAY_SIZE(cs47l85_aif4_pins) },
|
||||
{ "mif1", cs47l85_mif1_pins, ARRAY_SIZE(cs47l85_mif1_pins) },
|
||||
{ "mif2", cs47l85_mif2_pins, ARRAY_SIZE(cs47l85_mif2_pins) },
|
||||
{ "mif3", cs47l85_mif3_pins, ARRAY_SIZE(cs47l85_mif3_pins) },
|
||||
{ "dmic4", cs47l85_dmic4_pins, ARRAY_SIZE(cs47l85_dmic4_pins) },
|
||||
{ "dmic5", cs47l85_dmic5_pins, ARRAY_SIZE(cs47l85_dmic5_pins) },
|
||||
{ "dmic6", cs47l85_dmic6_pins, ARRAY_SIZE(cs47l85_dmic6_pins) },
|
||||
{ "pdmspk1", cs47l85_spk1_pins, ARRAY_SIZE(cs47l85_spk1_pins) },
|
||||
{ "pdmspk2", cs47l85_spk2_pins, ARRAY_SIZE(cs47l85_spk2_pins) },
|
||||
};
|
||||
|
||||
const struct madera_pin_chip cs47l85_pin_chip = {
|
||||
.n_pins = CS47L85_NUM_GPIOS,
|
||||
.pin_groups = cs47l85_pin_groups,
|
||||
.n_pin_groups = ARRAY_SIZE(cs47l85_pin_groups),
|
||||
};
|
||||
57
drivers/pinctrl/cirrus/pinctrl-cs47l90.c
Normal file
57
drivers/pinctrl/cirrus/pinctrl-cs47l90.c
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Pinctrl for Cirrus Logic CS47L90
|
||||
*
|
||||
* Copyright (C) 2016-2017 Cirrus Logic
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; version 2.
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/mfd/madera/core.h>
|
||||
|
||||
#include "pinctrl-madera.h"
|
||||
|
||||
/*
|
||||
* The alt func groups are the most commonly used functions we place these at
|
||||
* the lower function indexes for convenience, and the less commonly used gpio
|
||||
* functions at higher indexes.
|
||||
*
|
||||
* To stay consistent with the datasheet the function names are the same as
|
||||
* the group names for that function's pins
|
||||
*
|
||||
* Note - all 1 less than in datasheet because these are zero-indexed
|
||||
*/
|
||||
static const unsigned int cs47l90_mif1_pins[] = { 8, 9 };
|
||||
static const unsigned int cs47l90_mif2_pins[] = { 10, 11 };
|
||||
static const unsigned int cs47l90_mif3_pins[] = { 12, 13 };
|
||||
static const unsigned int cs47l90_aif1_pins[] = { 14, 15, 16, 17 };
|
||||
static const unsigned int cs47l90_aif2_pins[] = { 18, 19, 20, 21 };
|
||||
static const unsigned int cs47l90_aif3_pins[] = { 22, 23, 24, 25 };
|
||||
static const unsigned int cs47l90_aif4_pins[] = { 26, 27, 28, 29 };
|
||||
static const unsigned int cs47l90_dmic4_pins[] = { 30, 31 };
|
||||
static const unsigned int cs47l90_dmic5_pins[] = { 32, 33 };
|
||||
static const unsigned int cs47l90_dmic3_pins[] = { 34, 35 };
|
||||
static const unsigned int cs47l90_spk1_pins[] = { 36, 37 };
|
||||
|
||||
static const struct madera_pin_groups cs47l90_pin_groups[] = {
|
||||
{ "aif1", cs47l90_aif1_pins, ARRAY_SIZE(cs47l90_aif1_pins) },
|
||||
{ "aif2", cs47l90_aif2_pins, ARRAY_SIZE(cs47l90_aif2_pins) },
|
||||
{ "aif3", cs47l90_aif3_pins, ARRAY_SIZE(cs47l90_aif3_pins) },
|
||||
{ "aif4", cs47l90_aif4_pins, ARRAY_SIZE(cs47l90_aif4_pins) },
|
||||
{ "mif1", cs47l90_mif1_pins, ARRAY_SIZE(cs47l90_mif1_pins) },
|
||||
{ "mif2", cs47l90_mif2_pins, ARRAY_SIZE(cs47l90_mif2_pins) },
|
||||
{ "mif3", cs47l90_mif3_pins, ARRAY_SIZE(cs47l90_mif3_pins) },
|
||||
{ "dmic3", cs47l90_dmic3_pins, ARRAY_SIZE(cs47l90_dmic3_pins) },
|
||||
{ "dmic4", cs47l90_dmic4_pins, ARRAY_SIZE(cs47l90_dmic4_pins) },
|
||||
{ "dmic5", cs47l90_dmic5_pins, ARRAY_SIZE(cs47l90_dmic5_pins) },
|
||||
{ "pdmspk1", cs47l90_spk1_pins, ARRAY_SIZE(cs47l90_spk1_pins) },
|
||||
};
|
||||
|
||||
const struct madera_pin_chip cs47l90_pin_chip = {
|
||||
.n_pins = CS47L90_NUM_GPIOS,
|
||||
.pin_groups = cs47l90_pin_groups,
|
||||
.n_pin_groups = ARRAY_SIZE(cs47l90_pin_groups),
|
||||
};
|
||||
1076
drivers/pinctrl/cirrus/pinctrl-madera-core.c
Normal file
1076
drivers/pinctrl/cirrus/pinctrl-madera-core.c
Normal file
File diff suppressed because it is too large
Load diff
41
drivers/pinctrl/cirrus/pinctrl-madera.h
Normal file
41
drivers/pinctrl/cirrus/pinctrl-madera.h
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Pinctrl for Cirrus Logic Madera codecs
|
||||
*
|
||||
* Copyright (C) 2016-2017 Cirrus Logic
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; version 2.
|
||||
*/
|
||||
|
||||
#ifndef PINCTRL_MADERA_H
|
||||
#define PINCTRL_MADERA_H
|
||||
|
||||
struct madera_pin_groups {
|
||||
const char *name;
|
||||
const unsigned int *pins;
|
||||
unsigned int n_pins;
|
||||
};
|
||||
|
||||
struct madera_pin_chip {
|
||||
unsigned int n_pins;
|
||||
|
||||
const struct madera_pin_groups *pin_groups;
|
||||
unsigned int n_pin_groups;
|
||||
};
|
||||
|
||||
struct madera_pin_private {
|
||||
struct madera *madera;
|
||||
|
||||
const struct madera_pin_chip *chip; /* chip-specific groups */
|
||||
|
||||
struct device *dev;
|
||||
struct pinctrl_dev *pctl;
|
||||
};
|
||||
|
||||
extern const struct madera_pin_chip cs47l35_pin_chip;
|
||||
extern const struct madera_pin_chip cs47l85_pin_chip;
|
||||
extern const struct madera_pin_chip cs47l90_pin_chip;
|
||||
|
||||
#endif
|
||||
Loading…
Reference in a new issue