[PATCH 1/3] phy: rockchip: emmc: Enable pulldown for strobe line
Dragan Simic
dsimic at manjaro.org
Tue Mar 26 12:55:40 PDT 2024
Hello Conor and Folker,
On 2024-03-26 20:46, Conor Dooley wrote:
> On Tue, Mar 26, 2024 at 07:54:35PM +0100, Folker Schwesinger via B4
> Relay wrote:
>> From: Folker Schwesinger <dev at folker-schwesinger.de>
>>
>> Restore the behavior of the Rockchip kernel that undconditionally
>> enables the internal strobe pulldown.
>
> What do you mean "restore the behaviour of the rockchip kernel"? Did
> mainline behave the same as the rockchip kernel previously? If not,
> using "restore" here is misleading. "Unconditionally" is also
> incorrect,
> because you have a property that disables it.
>
>> As the DT property rockchip,enable-strobe-pulldown is obsolete now,
>> replace it with a property to disable the internal pulldown.
>>
>> This fixes I/O errors observed on various Rock Pi 4 and NanoPi4 series
>> boards with some eMMC modules. Other boards may also be affected.
>>
>> An example of these errors is as follows:
>>
>> [ 290.060817] mmc1: running CQE recovery
>> [ 290.061337] blk_update_request: I/O error, dev mmcblk1, sector
>> 1411072 op 0x1:(WRITE) flags 0x800 phys_seg 36 prio class 0
>> [ 290.061370] EXT4-fs warning (device mmcblk1p1): ext4_end_bio:348:
>> I/O error 10 writing to inode 29547 starting block 176466)
>> [ 290.061484] Buffer I/O error on device mmcblk1p1, logical block
>> 172288
>>
>> Fixes: 8b5c2b45b8f0 ("phy: rockchip: set pulldown for strobe line in
>> dts")
>> Signed-off-by: Folker Schwesinger <dev at folker-schwesinger.de>
>> ---
>> drivers/phy/rockchip/phy-rockchip-emmc.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/phy/rockchip/phy-rockchip-emmc.c
>> b/drivers/phy/rockchip/phy-rockchip-emmc.c
>> index 20023f6eb994..6e637f3e1b19 100644
>> --- a/drivers/phy/rockchip/phy-rockchip-emmc.c
>> +++ b/drivers/phy/rockchip/phy-rockchip-emmc.c
>> @@ -376,14 +376,14 @@ static int rockchip_emmc_phy_probe(struct
>> platform_device *pdev)
>> rk_phy->reg_offset = reg_offset;
>> rk_phy->reg_base = grf;
>> rk_phy->drive_impedance = PHYCTRL_DR_50OHM;
>> - rk_phy->enable_strobe_pulldown = PHYCTRL_REN_STRB_DISABLE;
>> + rk_phy->enable_strobe_pulldown = PHYCTRL_REN_STRB_ENABLE;
>> rk_phy->output_tapdelay_select = PHYCTRL_OTAPDLYSEL_DEFAULT;
>>
>> if (!of_property_read_u32(dev->of_node, "drive-impedance-ohm",
>> &val))
>> rk_phy->drive_impedance = convert_drive_impedance_ohm(pdev, val);
>>
>> - if (of_property_read_bool(dev->of_node,
>> "rockchip,enable-strobe-pulldown"))
>> - rk_phy->enable_strobe_pulldown = PHYCTRL_REN_STRB_ENABLE;
>> + if (of_property_read_bool(dev->of_node,
>> "rockchip,disable-strobe-pulldown"))
>> + rk_phy->enable_strobe_pulldown = PHYCTRL_REN_STRB_DISABLE;
>
> Unfortunately you cannot do this.
> Previously no property at all meant disabled and a property was
> required
> to enable it. With this change the absence of a property means that it
> will be enabled.
> An old devicetree is that wanted this to be disabled would have no
> property and will now end up with it enabled. This is an ABI break and
> is
> clearly not backwards compatible, that's a NAK unless it is
> demonstrable
> that noone actually wants to disable it at all.
Moreover, as I already explained some time ago, [1] some boards and
devices are unfortunately miswired, and we don't want to enable the
DATA STROBE pull-down on such boards.
[1]
https://lore.kernel.org/linux-rockchip/ca5b7cad01f645c7c559ab26a8db8085@manjaro.org/#t
> If this patch fixes a problem on a board that you have, I would suggest
> that you add the property to enable it, as the binding tells you to.
>
> Thanks,
> Conor.
>
>> if (!of_property_read_u32(dev->of_node,
>> "rockchip,output-tapdelay-select", &val)) {
>> if (val <= PHYCTRL_OTAPDLYSEL_MAXVALUE)
>>
>> --
>> 2.44.0
>>
>>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
More information about the Linux-rockchip
mailing list