Merge tag 'pinctrl-v5.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij: "This is a calm cycle, not much happened this time around: not even much incremental development. Some three new drivers, that is all. No core changes. New drivers: - NXP (ex Freescale) i.MX 8QM driver. - NXP (ex Freescale) i.MX 8MM driver. - AT91 SAM9X60 subdriver. Improvements: - Support for external interrups (EINT) on Mediatek virtual GPIOs. - Make BCM2835 pin config fully generic. - Lots of Renesas SH-PFC incremental improvements" * tag 'pinctrl-v5.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (70 commits) pinctrl: imx: fix scu link errors dt-bindings: pinctrl: Document the i.MX50 IOMUXC binding pinctrl: qcom: spmi-gpio: Reorder debug print pinctrl: nomadik: fix possible object reference leak pinctrl: stm32: return error upon hwspinlock failure pinctrl: stm32: fix memory leak issue pinctrl: sh-pfc: r8a77965: Add DRIF pins, groups and functions pinctrl: sh-pfc: r8a77965: Add TMU pins, groups and functions pinctrl: sh-pfc: Validate fixed-size field widths at build time pinctrl: sh-pfc: sh73a0: Fix fsic_spdif pin groups pinctrl: sh-pfc: r8a7792: Fix vin1_data18_b pin group pinctrl: sh-pfc: r8a7791: Fix scifb2_data_c pin group pinctrl: sh-pfc: emev2: Add missing pinmux functions pinctrl: sunxi: Support I/O bias voltage setting on A80 pinctrl: ingenic: Add LCD pins for the JZ4725B SoC pinctrl: samsung: Remove legacy API for handling external wakeup interrupts mask pinctrl: bcm2835: Direct GPIO config changes to generic pinctrl pinctrl: bcm2835: declare pin config as generic pinctrl: qcom: qcs404: Drop unused UFS_RESET macro dt-bindings: add documentation for slew rate ...
This commit is contained in:
@@ -31,6 +31,9 @@
|
||||
* In some cases the register ranges for pull enable and pull
|
||||
* direction are the same and thus there are only 3 register ranges.
|
||||
*
|
||||
* Since Meson G12A SoC, the ao register ranges for gpio, pull enable
|
||||
* and pull direction are the same, so there are only 2 register ranges.
|
||||
*
|
||||
* For the pull and GPIO configuration every bank uses a contiguous
|
||||
* set of bits in the register sets described above; the same register
|
||||
* can be shared by more banks with different offsets.
|
||||
@@ -488,21 +491,26 @@ static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc,
|
||||
return PTR_ERR(pc->reg_mux);
|
||||
}
|
||||
|
||||
pc->reg_pull = meson_map_resource(pc, gpio_np, "pull");
|
||||
if (IS_ERR(pc->reg_pull)) {
|
||||
dev_err(pc->dev, "pull registers not found\n");
|
||||
return PTR_ERR(pc->reg_pull);
|
||||
pc->reg_gpio = meson_map_resource(pc, gpio_np, "gpio");
|
||||
if (IS_ERR(pc->reg_gpio)) {
|
||||
dev_err(pc->dev, "gpio registers not found\n");
|
||||
return PTR_ERR(pc->reg_gpio);
|
||||
}
|
||||
|
||||
pc->reg_pull = meson_map_resource(pc, gpio_np, "pull");
|
||||
/* Use gpio region if pull one is not present */
|
||||
if (IS_ERR(pc->reg_pull))
|
||||
pc->reg_pull = pc->reg_gpio;
|
||||
|
||||
pc->reg_pullen = meson_map_resource(pc, gpio_np, "pull-enable");
|
||||
/* Use pull region if pull-enable one is not present */
|
||||
if (IS_ERR(pc->reg_pullen))
|
||||
pc->reg_pullen = pc->reg_pull;
|
||||
|
||||
pc->reg_gpio = meson_map_resource(pc, gpio_np, "gpio");
|
||||
if (IS_ERR(pc->reg_gpio)) {
|
||||
dev_err(pc->dev, "gpio registers not found\n");
|
||||
return PTR_ERR(pc->reg_gpio);
|
||||
pc->reg_ds = meson_map_resource(pc, gpio_np, "ds");
|
||||
if (IS_ERR(pc->reg_ds)) {
|
||||
dev_dbg(pc->dev, "ds registers not found - skipping\n");
|
||||
pc->reg_ds = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -120,6 +120,7 @@ struct meson_pinctrl {
|
||||
struct regmap *reg_pullen;
|
||||
struct regmap *reg_pull;
|
||||
struct regmap *reg_gpio;
|
||||
struct regmap *reg_ds;
|
||||
struct gpio_chip chip;
|
||||
struct device_node *of_node;
|
||||
};
|
||||
|
||||
@@ -346,6 +346,8 @@ static const unsigned int eth_rx_dv_pins[] = { DIF_1_P };
|
||||
static const unsigned int eth_rx_clk_pins[] = { DIF_1_N };
|
||||
static const unsigned int eth_txd0_1_pins[] = { DIF_2_P };
|
||||
static const unsigned int eth_txd1_1_pins[] = { DIF_2_N };
|
||||
static const unsigned int eth_rxd3_pins[] = { DIF_2_P };
|
||||
static const unsigned int eth_rxd2_pins[] = { DIF_2_N };
|
||||
static const unsigned int eth_tx_en_pins[] = { DIF_3_P };
|
||||
static const unsigned int eth_ref_clk_pins[] = { DIF_3_N };
|
||||
static const unsigned int eth_mdc_pins[] = { DIF_4_P };
|
||||
@@ -599,6 +601,8 @@ static struct meson_pmx_group meson8b_cbus_groups[] = {
|
||||
GROUP(eth_ref_clk, 6, 8),
|
||||
GROUP(eth_mdc, 6, 9),
|
||||
GROUP(eth_mdio_en, 6, 10),
|
||||
GROUP(eth_rxd3, 7, 22),
|
||||
GROUP(eth_rxd2, 7, 23),
|
||||
};
|
||||
|
||||
static struct meson_pmx_group meson8b_aobus_groups[] = {
|
||||
@@ -748,7 +752,7 @@ static const char * const ethernet_groups[] = {
|
||||
"eth_tx_clk", "eth_tx_en", "eth_txd1_0", "eth_txd1_1",
|
||||
"eth_txd0_0", "eth_txd0_1", "eth_rx_clk", "eth_rx_dv",
|
||||
"eth_rxd1", "eth_rxd0", "eth_mdio_en", "eth_mdc", "eth_ref_clk",
|
||||
"eth_txd2", "eth_txd3"
|
||||
"eth_txd2", "eth_txd3", "eth_rxd3", "eth_rxd2"
|
||||
};
|
||||
|
||||
static const char * const i2c_a_groups[] = {
|
||||
|
||||
Reference in New Issue
Block a user