mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Immutable branch (mfd, chrome) due for the v4.19 window
Immutable Branch which moves the cros_ec_i2c and cros_ec_spi transport drivers from mfd to platform/chrome. Changes in arm are a simple rename in defconfigs. Change in input is a rename in help text. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE6gYDF28Li+nEiKLaHwn1ewov5lgFAltCtRsACgkQHwn1ewov 5lhIQg//fEoZkDIjFsWIDn2WB1brLS2q7Wnv01NJR3/ZxzA29JYQ1lNA3nCM5mVS Bf1RqPfVwIO6/d+QA5AnxLBRpRYJ7F7NKwvTvrqQ9QpFPNOLk0m7uUNYSsWTOqlA uoReeFfJ2/UuUavd04KJRPv1ilCjoki2Wyc4lqVFSJSGZZjDWUOASAiOd666h26F avW4qBUpJm7mmAfOFh76g6c/Jq713fJkqfdRcstRajB13oLjotfRxa/Rhxb+y8aX RrlNz8PChIjpYTQ7yDwfLU8u5TDg2sEtz8529YaddDNBWkRyC2BIrKrkev+GIiUx SZiPT7nmvpEOGJoPQodUa5bgE/9db7pPKb7XqUNmYQIS71jtLaOXMNje9uLn2NHo CJtoVHJXZ9YWyODn1NPvFM28aysis14PWQGWK1HRq5PCfb8TpZ8W0QTaJV18pUBe vdrmgxPcdnkAn0Tbt92oBiUrsVT3zoSQuLw9FPuy3ne9Oz+TKHa6kKzjcMMkynwb mFmDhf822mfbUVkjUpNTtLJ0UMsNtd/tphDUmv1OQDRNStZS/MI4+xr23bPZbf/X blrIjz5fM6uhUbHSKztWnntGAtzbEy75zzyhh2w99JVzJtK4UK+3ET40Kko4KUIx 1ppYa2wOJVVSvd733O8mYGmzQotKuFc5lyNozlB4EUT8ro/zW1Q= =EhHj -----END PGP SIGNATURE----- Merge branches 'ib-mfd-4.19', 'ib-mfd-gpio-pinctrl-4.19', 'ib-mfd-i915-media-platform-4.19' and 'ib-mfd-regulator-4.19', tag 'ib-platform-chrome-mfd-move-cros-ec-transport-for-4.19' into ibs-for-mfd-merged Immutable branch (mfd, chrome) due for the v4.19 window Immutable Branch which moves the cros_ec_i2c and cros_ec_spi transport drivers from mfd to platform/chrome. Changes in arm are a simple rename in defconfigs. Change in input is a rename in help text.
This commit is contained in:
commit
e5ff19cf75
769 changed files with 22254 additions and 4166 deletions
|
|
@ -360,6 +360,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/
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ static int owl_pin_config_set(struct pinctrl_dev *pctrldev,
|
|||
unsigned long flags;
|
||||
unsigned int param;
|
||||
u32 reg, bit, width, arg;
|
||||
int ret, i;
|
||||
int ret = 0, i;
|
||||
|
||||
info = &pctrl->soc->padinfo[pin];
|
||||
|
||||
|
|
|
|||
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
|
||||
|
|
@ -101,10 +101,11 @@ struct pinctrl_dev *of_pinctrl_get(struct device_node *np)
|
|||
}
|
||||
|
||||
static int dt_to_map_one_config(struct pinctrl *p,
|
||||
struct pinctrl_dev *pctldev,
|
||||
struct pinctrl_dev *hog_pctldev,
|
||||
const char *statename,
|
||||
struct device_node *np_config)
|
||||
{
|
||||
struct pinctrl_dev *pctldev = NULL;
|
||||
struct device_node *np_pctldev;
|
||||
const struct pinctrl_ops *ops;
|
||||
int ret;
|
||||
|
|
@ -123,8 +124,10 @@ static int dt_to_map_one_config(struct pinctrl *p,
|
|||
return -EPROBE_DEFER;
|
||||
}
|
||||
/* If we're creating a hog we can use the passed pctldev */
|
||||
if (pctldev && (np_pctldev == p->dev->of_node))
|
||||
if (hog_pctldev && (np_pctldev == p->dev->of_node)) {
|
||||
pctldev = hog_pctldev;
|
||||
break;
|
||||
}
|
||||
pctldev = get_pinctrl_dev_from_of_node(np_pctldev);
|
||||
if (pctldev)
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1459,6 +1459,9 @@ static int mtk_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
|
|||
struct mtk_pinctrl *hw = gpiochip_get_data(chip);
|
||||
unsigned long eint_n;
|
||||
|
||||
if (!hw->eint)
|
||||
return -ENOTSUPP;
|
||||
|
||||
eint_n = offset;
|
||||
|
||||
return mtk_eint_find_irq(hw->eint, eint_n);
|
||||
|
|
@ -1471,7 +1474,8 @@ static int mtk_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
|
|||
unsigned long eint_n;
|
||||
u32 debounce;
|
||||
|
||||
if (pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
|
||||
if (!hw->eint ||
|
||||
pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
|
||||
return -ENOTSUPP;
|
||||
|
||||
debounce = pinconf_to_config_argument(config);
|
||||
|
|
|
|||
|
|
@ -1000,11 +1000,6 @@ static int mtk_eint_init(struct mtk_pinctrl *pctl, struct platform_device *pdev)
|
|||
return -ENOMEM;
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!res) {
|
||||
dev_err(&pdev->dev, "Unable to get eint resource\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
pctl->eint->base = devm_ioremap_resource(&pdev->dev, res);
|
||||
if (IS_ERR(pctl->eint->base))
|
||||
return PTR_ERR(pctl->eint->base);
|
||||
|
|
|
|||
|
|
@ -1590,8 +1590,11 @@ static int pcs_save_context(struct pcs_device *pcs)
|
|||
|
||||
mux_bytes = pcs->width / BITS_PER_BYTE;
|
||||
|
||||
if (!pcs->saved_vals)
|
||||
if (!pcs->saved_vals) {
|
||||
pcs->saved_vals = devm_kzalloc(pcs->dev, pcs->size, GFP_ATOMIC);
|
||||
if (!pcs->saved_vals)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
switch (pcs->width) {
|
||||
case 64:
|
||||
|
|
@ -1651,8 +1654,13 @@ static int pinctrl_single_suspend(struct platform_device *pdev,
|
|||
if (!pcs)
|
||||
return -EINVAL;
|
||||
|
||||
if (pcs->flags & PCS_CONTEXT_LOSS_OFF)
|
||||
pcs_save_context(pcs);
|
||||
if (pcs->flags & PCS_CONTEXT_LOSS_OFF) {
|
||||
int ret;
|
||||
|
||||
ret = pcs_save_context(pcs);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return pinctrl_force_sleep(pcs->pctl);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue