[PATCH] riscv: dts: fix memory size for the SiFive HiFive Unmatched
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Fri Jul 30 04:54:28 PDT 2021
On 04.07.21 14:13, Vincent Pelletier wrote:
> On Sun, 04 Jul 2021 11:15:55 +0200, Andreas Schwab <schwab at linux-m68k.org> wrote:
>> On Jul 04 2021, Qiu Wenbo wrote:
>>
>>> The production version of HiFive Unmatched have 16GB memory.
>>>
>>> Signed-off-by: Qiu Wenbo <qiuwenbo at kylinos.com.cn>
>>> ---
>>> arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts b/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
>>> index b1c3c596578f..2e4ea84f27e7 100644
>>> --- a/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
>>> +++ b/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts
>>> @@ -24,7 +24,7 @@ cpus {
>>>
>>> memory at 80000000 {
>>> device_type = "memory";
>>> - reg = <0x0 0x80000000 0x2 0x00000000>;
>>> + reg = <0x0 0x80000000 0x4 0x00000000>;
>>> };
>>>
>>> soc {
>>
>> https://github.com/sifive/meta-sifive/blob/2021.06/recipes-kernel/linux/files/0003-riscv-sifive-unmatched-update-for-16GB-rev3.patch
>> contains more changes.
>
> Here is what I learned on this topic while poking at the regulator part
> of this devicetree:
>
> While these extra changes match the board's schematics, they are
> rejected by the da9063-regulator driver:
> - some channels are merged on the board, but the devicetree does not
> show that: they have different names, with different maximum current.
> The updated values exceed the single-channel maximum, so the driver
> rejects them.
> - 3 of the regulators are further configurable in overdrive mode on the
> board, allowing higher maximum current, but the driver does not
> handle this.
> Similarly to previous point, the updated values exceed the
> non-overdrive maximum, so the driver rejects them.
> I've submitted a tentative fix, but its logic is backwards: it
> detects the overdrive bits and increases the maximums, whereas it
> should see the higher maximums and as a reaction enable the overdrive
> bits
> - also, some voltages fall in-between possible values, which causes the
> driver to reject as well (ex: vdd_bperi is at 1.05V, but the chip can
> either do 1.04 or 1.06)
> - ...and likewise for some current values (ex: vdd_bpro is at 2.5A, but
> the chip can only detect 2.4 or 2.6)
>
> So from a pure system behaviour perspective, these extra changes should
> not matter either way (at least in my understanding). At least not with
> the driver in its current state.
>
> OTOH:
> - the changes missing here are more correct than current master
> - not including them will probably make meta-sifive maintainer's life a
> bit more difficult
>
We should not mix changes that are unrelated in a single patch. Even if
regulator changes are advised they should be submitted in a separate patch.
The HiFive Unmatched shows the full available memory with this patch alone.
Tested-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
More information about the linux-riscv
mailing list