mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
gpio updates for v5.1
- support for a new variant of pca953x - documentation fix from Wolfram - some tegra186 name changes - two minor fixes for madera and altera-a10sr -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEFp3rbAvDxGAT0sefEacuoBRx13IFAlxleLcACgkQEacuoBRx 13I45Q//YMGUYzkMjOL+lp2DYnnVhVNqrF4hoLjinWVrnhZ6gqu88RgV2Cea4Pta oxVxnSsE8LK7kY8VZ8tcBmIqLLkQAJdSVtqkeSoZF2vhWBAbE9ZaSOYb17SIkSXK Ok16lZgZ+ZWOM5EjEvuRpB/qYGjX2glD5/Y2Kl7+wsX1W6U2pXasP0IjhcvDU8mJ NXNgfkr6kluMUqHJyqKo8eT/P3Hdv0CK9GsN2vGyfJenCdTSd7EC6KuhWAivi+fG /lf1bVuc2cCiXjxdSOXx+Yz7SjNe56viTaqnn/K6OlfLgErjKnRW+AxPkTZXNtDi pfMMpPXiwPcbQR2wrXG/7OMmJ1kUsfWoIUCx5RDwhF1KbEQVqgaSITLylk+4Yp/3 eM0fYsQ+KvOdAnWKSgfxBhaaiO7z5XDdrnkSHBDoiBrm07BqBgK/v3Rivzf2GMEv QvM4OBfThS9I8skV5BaOBRDfHZs4N0EU/vhsW9gt50urtlSM0vSYx6kdMq/8R0k4 NkJT43u+1vi5koMljBAsZYZiyXOQ2B+PlfpTMfMu+93QH8wlu9mOt1r3YTQyA1Xf jiOK8M2yQKP5g7RuPM6MtMsqlZKDM5nAlSf7S280Z3+vBd+LaELbXvT2/JL5ViGU hfH/gaNwUGUYd8EsWvfhHVdPAAecDCwxfKyKEnFGhMrtunTgwfI= =nV64 -----END PGP SIGNATURE----- Merge tag 'gpio-v5.1-updates-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into devel gpio updates for v5.1 - support for a new variant of pca953x - documentation fix from Wolfram - some tegra186 name changes - two minor fixes for madera and altera-a10sr
This commit is contained in:
commit
8fab3d713c
1628 changed files with 17387 additions and 8644 deletions
|
|
@ -1513,7 +1513,7 @@ static const struct dmi_system_id chv_no_valid_mask[] = {
|
|||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
|
||||
DMI_MATCH(DMI_PRODUCT_FAMILY, "Intel_Strago"),
|
||||
DMI_MATCH(DMI_BOARD_VERSION, "1.0"),
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -1521,7 +1521,7 @@ static const struct dmi_system_id chv_no_valid_mask[] = {
|
|||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "HP"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Setzer"),
|
||||
DMI_MATCH(DMI_BOARD_VERSION, "1.0"),
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -1529,7 +1529,7 @@ static const struct dmi_system_id chv_no_valid_mask[] = {
|
|||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Cyan"),
|
||||
DMI_MATCH(DMI_BOARD_VERSION, "1.0"),
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -1537,7 +1537,7 @@ static const struct dmi_system_id chv_no_valid_mask[] = {
|
|||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Celes"),
|
||||
DMI_MATCH(DMI_BOARD_VERSION, "1.0"),
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "1.0"),
|
||||
},
|
||||
},
|
||||
{}
|
||||
|
|
|
|||
|
|
@ -45,12 +45,14 @@ config PINCTRL_MT2701
|
|||
config PINCTRL_MT7623
|
||||
bool "Mediatek MT7623 pin control with generic binding"
|
||||
depends on MACH_MT7623 || COMPILE_TEST
|
||||
depends on OF
|
||||
default MACH_MT7623
|
||||
select PINCTRL_MTK_MOORE
|
||||
|
||||
config PINCTRL_MT7629
|
||||
bool "Mediatek MT7629 pin control"
|
||||
depends on MACH_MT7629 || COMPILE_TEST
|
||||
depends on OF
|
||||
default MACH_MT7629
|
||||
select PINCTRL_MTK_MOORE
|
||||
|
||||
|
|
@ -92,6 +94,7 @@ config PINCTRL_MT6797
|
|||
|
||||
config PINCTRL_MT7622
|
||||
bool "MediaTek MT7622 pin control"
|
||||
depends on OF
|
||||
depends on ARM64 || COMPILE_TEST
|
||||
default ARM64 && ARCH_MEDIATEK
|
||||
select PINCTRL_MTK_MOORE
|
||||
|
|
|
|||
|
|
@ -832,8 +832,13 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
|
|||
break;
|
||||
|
||||
case MCP_TYPE_S18:
|
||||
one_regmap_config =
|
||||
devm_kmemdup(dev, &mcp23x17_regmap,
|
||||
sizeof(struct regmap_config), GFP_KERNEL);
|
||||
if (!one_regmap_config)
|
||||
return -ENOMEM;
|
||||
mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp,
|
||||
&mcp23x17_regmap);
|
||||
one_regmap_config);
|
||||
mcp->reg_shift = 1;
|
||||
mcp->chip.ngpio = 16;
|
||||
mcp->chip.label = "mcp23s18";
|
||||
|
|
|
|||
|
|
@ -588,7 +588,7 @@ static const unsigned int h6_irq_bank_map[] = { 1, 5, 6, 7 };
|
|||
static const struct sunxi_pinctrl_desc h6_pinctrl_data = {
|
||||
.pins = h6_pins,
|
||||
.npins = ARRAY_SIZE(h6_pins),
|
||||
.irq_banks = 3,
|
||||
.irq_banks = 4,
|
||||
.irq_bank_map = h6_irq_bank_map,
|
||||
.irq_read_needs_mux = true,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -698,26 +698,24 @@ static int sunxi_pmx_request(struct pinctrl_dev *pctldev, unsigned offset)
|
|||
{
|
||||
struct sunxi_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
|
||||
unsigned short bank = offset / PINS_PER_BANK;
|
||||
struct sunxi_pinctrl_regulator *s_reg = &pctl->regulators[bank];
|
||||
struct regulator *reg;
|
||||
unsigned short bank_offset = bank - pctl->desc->pin_base /
|
||||
PINS_PER_BANK;
|
||||
struct sunxi_pinctrl_regulator *s_reg = &pctl->regulators[bank_offset];
|
||||
struct regulator *reg = s_reg->regulator;
|
||||
char supply[16];
|
||||
int ret;
|
||||
|
||||
reg = s_reg->regulator;
|
||||
if (!reg) {
|
||||
char supply[16];
|
||||
|
||||
snprintf(supply, sizeof(supply), "vcc-p%c", 'a' + bank);
|
||||
reg = regulator_get(pctl->dev, supply);
|
||||
if (IS_ERR(reg)) {
|
||||
dev_err(pctl->dev, "Couldn't get bank P%c regulator\n",
|
||||
'A' + bank);
|
||||
return PTR_ERR(reg);
|
||||
}
|
||||
|
||||
s_reg->regulator = reg;
|
||||
refcount_set(&s_reg->refcount, 1);
|
||||
} else {
|
||||
if (reg) {
|
||||
refcount_inc(&s_reg->refcount);
|
||||
return 0;
|
||||
}
|
||||
|
||||
snprintf(supply, sizeof(supply), "vcc-p%c", 'a' + bank);
|
||||
reg = regulator_get(pctl->dev, supply);
|
||||
if (IS_ERR(reg)) {
|
||||
dev_err(pctl->dev, "Couldn't get bank P%c regulator\n",
|
||||
'A' + bank);
|
||||
return PTR_ERR(reg);
|
||||
}
|
||||
|
||||
ret = regulator_enable(reg);
|
||||
|
|
@ -727,13 +725,13 @@ static int sunxi_pmx_request(struct pinctrl_dev *pctldev, unsigned offset)
|
|||
goto out;
|
||||
}
|
||||
|
||||
s_reg->regulator = reg;
|
||||
refcount_set(&s_reg->refcount, 1);
|
||||
|
||||
return 0;
|
||||
|
||||
out:
|
||||
if (refcount_dec_and_test(&s_reg->refcount)) {
|
||||
regulator_put(s_reg->regulator);
|
||||
s_reg->regulator = NULL;
|
||||
}
|
||||
regulator_put(s_reg->regulator);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -742,7 +740,9 @@ static int sunxi_pmx_free(struct pinctrl_dev *pctldev, unsigned offset)
|
|||
{
|
||||
struct sunxi_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
|
||||
unsigned short bank = offset / PINS_PER_BANK;
|
||||
struct sunxi_pinctrl_regulator *s_reg = &pctl->regulators[bank];
|
||||
unsigned short bank_offset = bank - pctl->desc->pin_base /
|
||||
PINS_PER_BANK;
|
||||
struct sunxi_pinctrl_regulator *s_reg = &pctl->regulators[bank_offset];
|
||||
|
||||
if (!refcount_dec_and_test(&s_reg->refcount))
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ struct sunxi_pinctrl {
|
|||
struct gpio_chip *chip;
|
||||
const struct sunxi_pinctrl_desc *desc;
|
||||
struct device *dev;
|
||||
struct sunxi_pinctrl_regulator regulators[12];
|
||||
struct sunxi_pinctrl_regulator regulators[9];
|
||||
struct irq_domain *domain;
|
||||
struct sunxi_pinctrl_function *functions;
|
||||
unsigned nfunctions;
|
||||
|
|
|
|||
Loading…
Reference in a new issue