[PATCH v4 4/7] ARM: l2c: Add support for overriding prefetch settings
From: Alexandre Belloni <hidden>
Date: 2014-09-19 09:50:08
Also in:
linux-omap, linux-samsung-soc, lkml
From: Alexandre Belloni <hidden>
Date: 2014-09-19 09:50:08
Also in:
linux-omap, linux-samsung-soc, lkml
On 26/08/2014 at 16:17:57 +0200, Tomasz Figa wrote :
Firmware on certain boards (e.g. ODROID-U3) can leave incorrect L2C prefetch settings configured in registers leading to crashes if L2C is enabled without overriding them. This patch introduces bindings to enable prefetch settings to be specified from DT and necessary support in the driver. Signed-off-by: Tomasz Figa <redacted>
Tested-by: Alexandre Belloni <redacted> It is working and useful on Atmel's sama5d4 were the bootloader is not configuring the L2C prefetch. However, I'm wondering whether we should add support for setting L310_PREFETCH_CTRL_DATA_PREFETCH and L310_PREFETCH_CTRL_INSTR_PREFETCH. I'm currently doing it by using ".l2c_aux_val = L310_AUX_CTRL_DATA_PREFETCH | L310_AUX_CTRL_INSTR_PREFETCH" (those are the same bits) but this has the disadvantage of displaying the "L2C: platform modifies aux control register:" twice.
+ if (!of_property_read_u32(np, "arm,prefetch-offset", &val)) {
+ prefetch &= ~L310_PREFETCH_CTRL_OFFSET_MASK;
+ prefetch |= val & L310_PREFETCH_CTRL_OFFSET_MASK;
+ }
+While you use val directly here, later, while printing the offset, val + 1 is used. Maybe it would be better to have the same number in both places, else you end up with having "arm,prefetch-offset = <1>" in your DT and the kernel printing "L2C-310 ID prefetch enabled, offset 2 lines". -- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com