mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-14 00:47:26 +00:00
d7009faa09
On RK3568 most pins have a configurable drive strength of level 0-5 and
some pins level 0-11. When rk3568_set_drive is called with a strength
value above 7 the drv value written to reg may overflow into the write
enable bits, resulting in a bad configuration.
This cause e.g. ethernet PHY on Radxa CM3-IO board not to work after
drive is configured according to the device tree.
Could not get PHY for ethernet@fe010000: addr 0
Level 6-11 can be configured using a second reg for some pins, however
the drv value is reused resulting in lower 6 bits being written to reg.
Input schmitt is configured in 2-bit fields on RK3568 compared to
earlier generation and 2'b10 should be used to enable input schmitt.
Change to use regmap_update_bits with a rmask to fix the overflow issue
and closer match the linux driver. Bit shift the drv value used for the
second reg to configure drive strength level 6-11. Also write correct
values for input schmitt setting.
Fixes:
|
||
---|---|---|
.. | ||
aspeed | ||
ath79 | ||
broadcom | ||
exynos | ||
intel | ||
mediatek | ||
meson | ||
mscc | ||
mtmips | ||
mvebu | ||
nexell | ||
nuvoton | ||
nxp | ||
renesas | ||
rockchip | ||
starfive | ||
sunxi | ||
uniphier | ||
Kconfig | ||
Makefile | ||
pinctrl-apple.c | ||
pinctrl-at91-pio4.c | ||
pinctrl-at91.c | ||
pinctrl-generic.c | ||
pinctrl-k210.c | ||
pinctrl-qe-io.c | ||
pinctrl-sandbox.c | ||
pinctrl-single.c | ||
pinctrl-sti.c | ||
pinctrl-stmfx.c | ||
pinctrl-uclass.c | ||
pinctrl-zynqmp.c | ||
pinctrl_pic32.c | ||
pinctrl_stm32.c |