Pin control fixes for the v4.15 cycle:
- Fix the UART2 RTS pin mode on Intel Denverton. - Fix the direction_output() behaviour on the Armada 37xx. - Fix the groups selection per-SoC on the Gemini. - Fix the interrupt pin bank on the Sunxi A80. - Fix the UART mux on the Sunxi A64. - Disable the strict mode on the Sunxi H5 driver. -----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJaJpuUAAoJEEEQszewGV1zaEwQAJhvSs4drBr8UNNH1Kg9FS7p yyrxHKYpgqzjvAxokZuffw/FBqLZfufih+o0SIk9icsllmDfN4GFTL4E5mVKETgH 9/4R5So8mMDiSEjzWqKG+NwREgMx6Xz5JR68GTIgEmIn5HYDuv3WT3yhfLQrNt2B 0CaWe3raRZ7zagj2DRx8E5NPL6pXiMFGsz0PPTmuOpc6Nfo47KOo7xgxUmTRUA8N SsjM6DwkAzMPv1Z99izWsadcKP1qFzVf+5mOdna/rDfffm+33T3+Cw5R3KEtl512 4Kyx4URGcQY/fCvYm4pIxOkS2/iGi3/MaDYcSR0MaogGJ7IOFBiSD0xZ3Opp90Bn +M/oTdH1CiHjOYUCyFW9P44aTE2bG2LEELW7am4cjyTTRE/ioy2ARC8/2v4QaLZ5 U3r/tjs+gIDb+nwUuxLbibT1V9j4JZ2QCp9o9k7VCmsXVsKYwTgbIR4AfpvBzUCd Y+C9aBux5ns7NTNv7xnhbBWn8lH+9pT7BHmNQI7Ru7eRkosWoz3pZ+BijvV+exeQ 7dCec7rj+lDyDmnvjxwcdhsXv+l/JIap5fK3RHWLxpjJ/Ct5EsnMII6eh2InPC4E 2GvusJBOb5etUms25V/tVUY+v2vIF8UDUg9qkZSDBX7+zuKNng4h3XotB81rR70K 0uxFl7X2hW1midI7hJCC =/auO -----END PGP SIGNATURE----- Merge tag 'pinctrl-v4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl Pull pin control fixes from Linus Walleij: "As with GPIO not much action in pin control. All are driver fixes: - fix the UART2 RTS pin mode on Intel Denverton - fix the direction_output() behaviour on the Armada 37xx - fix the groups selection per-SoC on the Gemini - fix the interrupt pin bank on the Sunxi A80 - fix the UART mux on the Sunxi A64 - disable the strict mode on the Sunxi H5 driver" * tag 'pinctrl-v4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: pinctrl: sunxi: Disable strict mode for H5 driver pinctrl: sunxi: Fix A64 UART mux value pinctrl: sunxi: Fix A80 interrupt pin bank pinctrl: gemini: Fix usage of 3512 groups pinctrl: armada-37xx: Fix direction_output() callback behavior pinctrl: denverton: Fix UART2 RTS pin mode
This commit is contained in:
commit
54b9937082
|
@ -207,7 +207,7 @@ static const unsigned int dnv_uart0_pins[] = { 60, 61, 64, 65 };
|
|||
static const unsigned int dnv_uart0_modes[] = { 2, 3, 1, 1 };
|
||||
static const unsigned int dnv_uart1_pins[] = { 94, 95, 96, 97 };
|
||||
static const unsigned int dnv_uart2_pins[] = { 60, 61, 62, 63 };
|
||||
static const unsigned int dnv_uart2_modes[] = { 1, 1, 2, 2 };
|
||||
static const unsigned int dnv_uart2_modes[] = { 1, 2, 2, 2 };
|
||||
static const unsigned int dnv_emmc_pins[] = {
|
||||
142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
|
||||
};
|
||||
|
|
|
@ -408,12 +408,21 @@ static int armada_37xx_gpio_direction_output(struct gpio_chip *chip,
|
|||
{
|
||||
struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
|
||||
unsigned int reg = OUTPUT_EN;
|
||||
unsigned int mask;
|
||||
unsigned int mask, val, ret;
|
||||
|
||||
armada_37xx_update_reg(®, offset);
|
||||
mask = BIT(offset);
|
||||
|
||||
return regmap_update_bits(info->regmap, reg, mask, mask);
|
||||
ret = regmap_update_bits(info->regmap, reg, mask, mask);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
reg = OUTPUT_VAL;
|
||||
val = value ? mask : 0;
|
||||
regmap_update_bits(info->regmap, reg, mask, val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset)
|
||||
|
|
|
@ -2322,7 +2322,7 @@ static const struct gemini_pin_conf *gemini_get_pin_conf(struct gemini_pmx *pmx,
|
|||
int i;
|
||||
|
||||
for (i = 0; i < pmx->nconfs; i++) {
|
||||
retconf = &gemini_confs_3516[i];
|
||||
retconf = &pmx->confs[i];
|
||||
if (retconf->pin == pin)
|
||||
return retconf;
|
||||
}
|
||||
|
|
|
@ -428,7 +428,7 @@ static const struct sunxi_desc_pin a64_pins[] = {
|
|||
SUNXI_FUNCTION(0x0, "gpio_in"),
|
||||
SUNXI_FUNCTION(0x1, "gpio_out"),
|
||||
SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
|
||||
SUNXI_FUNCTION(0x4, "uart0")), /* RX */
|
||||
SUNXI_FUNCTION(0x3, "uart0")), /* RX */
|
||||
SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
|
||||
SUNXI_FUNCTION(0x0, "gpio_in"),
|
||||
SUNXI_FUNCTION(0x1, "gpio_out"),
|
||||
|
|
|
@ -535,14 +535,16 @@ static const struct sunxi_pinctrl_desc sun50i_h5_pinctrl_data_broken = {
|
|||
.pins = sun50i_h5_pins,
|
||||
.npins = ARRAY_SIZE(sun50i_h5_pins),
|
||||
.irq_banks = 2,
|
||||
.irq_read_needs_mux = true
|
||||
.irq_read_needs_mux = true,
|
||||
.disable_strict_mode = true,
|
||||
};
|
||||
|
||||
static const struct sunxi_pinctrl_desc sun50i_h5_pinctrl_data = {
|
||||
.pins = sun50i_h5_pins,
|
||||
.npins = ARRAY_SIZE(sun50i_h5_pins),
|
||||
.irq_banks = 3,
|
||||
.irq_read_needs_mux = true
|
||||
.irq_read_needs_mux = true,
|
||||
.disable_strict_mode = true,
|
||||
};
|
||||
|
||||
static int sun50i_h5_pinctrl_probe(struct platform_device *pdev)
|
||||
|
|
|
@ -145,19 +145,19 @@ static const struct sunxi_desc_pin sun9i_a80_pins[] = {
|
|||
SUNXI_FUNCTION(0x0, "gpio_in"),
|
||||
SUNXI_FUNCTION(0x1, "gpio_out"),
|
||||
SUNXI_FUNCTION(0x3, "mcsi"), /* MCLK */
|
||||
SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 14)), /* PB_EINT14 */
|
||||
SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 14)), /* PB_EINT14 */
|
||||
SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 15),
|
||||
SUNXI_FUNCTION(0x0, "gpio_in"),
|
||||
SUNXI_FUNCTION(0x1, "gpio_out"),
|
||||
SUNXI_FUNCTION(0x3, "mcsi"), /* SCK */
|
||||
SUNXI_FUNCTION(0x4, "i2c4"), /* SCK */
|
||||
SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 15)), /* PB_EINT15 */
|
||||
SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 15)), /* PB_EINT15 */
|
||||
SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 16),
|
||||
SUNXI_FUNCTION(0x0, "gpio_in"),
|
||||
SUNXI_FUNCTION(0x1, "gpio_out"),
|
||||
SUNXI_FUNCTION(0x3, "mcsi"), /* SDA */
|
||||
SUNXI_FUNCTION(0x4, "i2c4"), /* SDA */
|
||||
SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 16)), /* PB_EINT16 */
|
||||
SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 16)), /* PB_EINT16 */
|
||||
|
||||
/* Hole */
|
||||
SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
|
||||
|
|
Loading…
Reference in New Issue