i’m not at home this weekend so cannot test, but pin numbers also differ, but not same offset…
have you checked with pinmux dump if the pinmux is applied?
we have defined these pins in dts
pcie3_pins: pcie3-pins {
mux {
function = "pcie";
groups = "pcie_1l_1_pereset", "pcie_clk_req_n3",
"pcie_wake_n3_0";
};
};
referring these pins/functions in pinctrl-driver (drivers/pinctrl/mediatek/pinctrl-mt7988.c)
static const int mt7988_pcie_1l_1_pereset_pins[] = { 20 };
static const int mt7988_pcie_1l_1_pereset_funcs[] = { 1 };
static const int mt7988_pcie_clk_req_n3_pins[] = { 10 };
static const int mt7988_pcie_clk_req_n3_funcs[] = { 1 };
static const int mt7988_pcie_wake_n3_0_pins[] = { 9 };
static const int mt7988_pcie_wake_n3_0_funcs[] = { 1 };
static const struct mtk_function_desc mt7988_functions[] = {
...
{"pcie", mt7988_pcie_groups, ARRAY_SIZE(mt7988_pcie_groups)},
...
static const char *const mt7988_pcie_groups[] = { "pcie_wake_n0_0",
"pcie_clk_req_n0_0", "pcie_wake_n3_0", "pcie_clk_req_n3",
"pcie_p0_phy_i2c", "pcie_p1_phy_i2c", "pcie_p3_phy_i2",
"pcie_p2_phy_i2c", "ckm_phy_i2c", "pcie_wake_n0_1", "pcie_wake_n3_1",
"pcie_2l_0_pereset", "pcie_1l_1_pereset", "pcie_clk_req_n2_1",
"pcie_2l_1_perese", "pcie_1l_0_pereset", "pcie_wake_n1_0",
"cie_clk_req_n1", "pcie_wake_n2_0", "pcie_wake_n2_1", };
cie_clk_req_n1 misses “p”, but unrelated to our controller
linux prints these
type: MUX_GROUP controller pinctrl_moore group: pcie_1l_1_pereset (40) function: pcie (7)
type: MUX_GROUP controller pinctrl_moore group: pcie_clk_req_n3 (16) function: pcie (7)
type: MUX_GROUP controller pinctrl_moore group: pcie_wake_n3_0 (15) function: pcie (7)
in linux pinmux definitions are same, but strange that displayed function is different
maybe you can set debugs in mtk_pinconf_group_set and mtk_pinconf_set in pinctrl-mtk-common.c
also wonder why such few clocks are shown in clk dump in uboot…
@moore have you an idea whats wrong here or is it right and the output is confusing us?