summaryrefslogtreecommitdiff
path: root/drivers/pinctrl/realtek/pinctrl-rtd.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-04-18 16:59:09 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2026-04-18 16:59:09 -0700
commitfaeab166167f5787719eb8683661fd41a3bb1514 (patch)
tree4483bcfbe6a67b555360e421860b0f6ef16aa575 /drivers/pinctrl/realtek/pinctrl-rtd.h
parent401b0e0bc96543881924d623388a9472b3331b3f (diff)
parent90700e10d2ad61c13a5117cfa5e08d9f2e497dcc (diff)
Merge tag 'pinctrl-v7.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrlHEADmaster
Pull pin control updates from Linus Walleij: "Core changes: - Perform basic checks on pin config properties so as not to allow directly contradictory settings such as setting a pin to more than one bias or drive mode - Handle input-threshold-voltage-microvolt property - Introduce pinctrl_gpio_get_config() handling in the core for SCMI GPIO using pin control New drivers: - GPIO-by-pin control driver (also appearing in the GPIO pull request) fulfilling a promise on a comment from Grant Likely many years ago: "can't GPIO just be a front-end for pin control?" it turns out it can, if and only if you design something new from scratch, such as SCMI - Broadcom BCM7038 as a pinctrl-single delegate - Mobileye EyeQ6Lplus OLB pin controller - Qualcomm Eliza and Hawi families TLMM pin controllers - Qualcomm SDM670 and Milos family LPASS LPI pin controllers - Qualcomm IPQ5210 pin controller - Realtek RTD1625 pin controller support - Rockchip RV1103B pin controller support - Texas Instruments AM62L as a pinctrl-single delegate Improvements: - Set config implementation for the Spacemit K1 pin controller" * tag 'pinctrl-v7.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (84 commits) pinctrl: qcom: Add Hawi pinctrl driver dt-bindings: pinctrl: qcom: Describe Hawi TLMM block dt-bindings: pinctrl: pinctrl-max77620: convert to DT schema pinctrl: single: Add bcm7038-padconf compatible matching dt-bindings: pinctrl: pinctrl-single: Add brcm,bcm7038-padconf dt-bindings: pinctrl: apple,pinctrl: Add t8122 compatible pinctrl: qcom: sdm670-lpass-lpi: label variables as static pinctrl: sophgo: pinctrl-sg2044: Fix wrong module description pinctrl: sophgo: pinctrl-sg2042: Fix wrong module description pinctrl: qcom: add sdm670 lpi tlmm dt-bindings: pinctrl: qcom: Add SDM670 LPASS LPI pinctrl dt-bindings: qcom: lpass-lpi-common: add reserved GPIOs property pinctrl: qcom: Introduce IPQ5210 TLMM driver dt-bindings: pinctrl: qcom: add IPQ5210 pinctrl pinctrl: qcom: Drop redundant intr_target_reg on modern SoCs pinctrl: qcom: eliza: Fix interrupt target bit pinctrl: core: Don't use "proxy" headers pinctrl: amd: Support new ACPI ID AMDI0033 pinctrl: renesas: rzg2l: Drop superfluous blank line pinctrl: renesas: rzg2l: Fix save/restore of {IOLH,IEN,PUPD,SMT} registers ...
Diffstat (limited to 'drivers/pinctrl/realtek/pinctrl-rtd.h')
-rw-r--r--drivers/pinctrl/realtek/pinctrl-rtd.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/drivers/pinctrl/realtek/pinctrl-rtd.h b/drivers/pinctrl/realtek/pinctrl-rtd.h
index e15130896abc0..77c30ea764431 100644
--- a/drivers/pinctrl/realtek/pinctrl-rtd.h
+++ b/drivers/pinctrl/realtek/pinctrl-rtd.h
@@ -34,6 +34,9 @@ struct rtd_pin_config_desc {
unsigned int smt_offset;
unsigned int power_offset;
unsigned int curr_type;
+ unsigned int input_volt_offset;
+ unsigned int slew_rate_offset;
+ unsigned int hvil_offset;
};
struct rtd_pin_sconfig_desc {
@@ -47,6 +50,16 @@ struct rtd_pin_sconfig_desc {
unsigned int pdrive_maskbits;
};
+struct rtd_reg_range {
+ unsigned int offset;
+ size_t len;
+};
+
+struct rtd_pin_range {
+ const struct rtd_reg_range *ranges;
+ const int num_ranges;
+};
+
struct rtd_pin_desc {
const char *name;
unsigned int mux_offset;
@@ -85,6 +98,40 @@ struct rtd_pin_reg_list {
.curr_type = _curr_type, \
}
+#define RTK_PIN_CONFIG_V2(_name, _reg_off, _base_bit, _pud_en_off, \
+ _pud_sel_off, _curr_off, _smt_off, _pow_off, _input_volt_off, \
+ _curr_type) \
+ { \
+ .name = # _name, \
+ .reg_offset = _reg_off, \
+ .base_bit = _base_bit, \
+ .pud_en_offset = _pud_en_off, \
+ .pud_sel_offset = _pud_sel_off, \
+ .curr_offset = _curr_off, \
+ .smt_offset = _smt_off, \
+ .power_offset = _pow_off, \
+ .input_volt_offset = _input_volt_off, \
+ .curr_type = _curr_type, \
+ }
+
+#define RTK_PIN_CONFIG_I2C(_name, _reg_off, _base_bit, _pud_en_off, \
+ _pud_sel_off, _curr_off, _smt_off, _hvil_off, _sr_off, _pow_off, \
+ _input_volt_off, _curr_type) \
+ { \
+ .name = # _name, \
+ .reg_offset = _reg_off, \
+ .base_bit = _base_bit, \
+ .pud_en_offset = _pud_en_off, \
+ .pud_sel_offset = _pud_sel_off, \
+ .curr_offset = _curr_off, \
+ .smt_offset = _smt_off, \
+ .hvil_offset = _hvil_off, \
+ .slew_rate_offset = _sr_off, \
+ .power_offset = _pow_off, \
+ .input_volt_offset = _input_volt_off, \
+ .curr_type = _curr_type, \
+ }
+
#define RTK_PIN_SCONFIG(_name, _reg_off, _d_offset, _d_mask, \
_n_offset, _n_mask, _p_offset, _p_mask) \
{ \
@@ -119,6 +166,9 @@ struct rtd_pinctrl_desc {
unsigned int num_sconfigs;
struct rtd_pin_reg_list *lists;
unsigned int num_regs;
+ const struct rtd_pin_range *pin_range;
};
int rtd_pinctrl_probe(struct platform_device *pdev, const struct rtd_pinctrl_desc *desc);
+
+extern const struct dev_pm_ops realtek_pinctrl_pm_ops;