diff mbox

ARM: dts: Add l2x0 device node for Exynos4-based boards

Message ID CAHbNUh0mbbwjuXCQKU6MaFLRoB9tq8wgrPchPOjCEkD07xz3qg@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Tushar Behera Feb. 12, 2014, 9:33 a.m. UTC
On 24 January 2014 17:18, Tomasz Figa <t.figa@samsung.com> wrote:
>
>
> On 24.01.2014 05:44, Tushar Behera wrote:
>>
>> On 23 January 2014 23:45, Tomasz Figa <t.figa@samsung.com> wrote:
>>>
>>> Hi,
>>>
>>>
>>> On 07.01.2014 09:53, Tushar Behera wrote:
>>>>
>>>>
>>>> For Exynos4 platform, L2 cache initialization is done only if
>>>> a device node for l2x0 device exists.
>>>>
>>>> L2 cache initialization path is different when a board boots with
>>>> secure firmware. Since there are many Exynos4 based SoCs that boot
>>>> in secure mode, enabling this only for boards that don't boot with
>>>> secure firmware.
>>>>
>>>> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
>>>> ---
>>>>
>>>> Tested on Exynos4210-Origen board.
>>>>
>>>>    arch/arm/boot/dts/exynos4.dtsi                  |    8 ++++++++
>>>>    arch/arm/boot/dts/exynos4210-origen.dts         |    4 ++++
>>>>    arch/arm/boot/dts/exynos4210-smdkv310.dts       |    4 ++++
>>>>    arch/arm/boot/dts/exynos4210-trats.dts          |    4 ++++
>>>>    arch/arm/boot/dts/exynos4210-universal_c210.dts |    4 ++++
>>>>    arch/arm/boot/dts/exynos4412-odroidx.dts        |    4 ++++
>>>>    arch/arm/boot/dts/exynos4412-smdk4412.dts       |    4 ++++
>>>>    arch/arm/boot/dts/exynos4412-tiny4412.dts       |    4 ++++
>>>>    8 files changed, 36 insertions(+)
>>>
>>>
>>>
>>> Looks good. Unfortunately this is still going to break secure firmware
>>> enabled boards, because l2x0_of_init() does not check if the node is
>>> enabled.
>>>
>>
>> Is the following check in l2x0_of_init() not enough?
>>
>> 1002 |-------np = of_find_matching_node(NULL, l2x0_ids);
>> 1003 |-------if (!np)
>> 1004 |-------|-------return -ENODEV;
>
>
> It only looks for a matching node without checking its status property.
>

Hmm ... so in that case, will this work?

Comments

Tomasz Figa Feb. 12, 2014, 10:10 a.m. UTC | #1
On 12.02.2014 10:33, Tushar Behera wrote:
> On 24 January 2014 17:18, Tomasz Figa <t.figa@samsung.com> wrote:
>>
>>
>> On 24.01.2014 05:44, Tushar Behera wrote:
>>>
>>> On 23 January 2014 23:45, Tomasz Figa <t.figa@samsung.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>>
>>>> On 07.01.2014 09:53, Tushar Behera wrote:
>>>>>
>>>>>
>>>>> For Exynos4 platform, L2 cache initialization is done only if
>>>>> a device node for l2x0 device exists.
>>>>>
>>>>> L2 cache initialization path is different when a board boots with
>>>>> secure firmware. Since there are many Exynos4 based SoCs that boot
>>>>> in secure mode, enabling this only for boards that don't boot with
>>>>> secure firmware.
>>>>>
>>>>> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
>>>>> ---
>>>>>
>>>>> Tested on Exynos4210-Origen board.
>>>>>
>>>>>     arch/arm/boot/dts/exynos4.dtsi                  |    8 ++++++++
>>>>>     arch/arm/boot/dts/exynos4210-origen.dts         |    4 ++++
>>>>>     arch/arm/boot/dts/exynos4210-smdkv310.dts       |    4 ++++
>>>>>     arch/arm/boot/dts/exynos4210-trats.dts          |    4 ++++
>>>>>     arch/arm/boot/dts/exynos4210-universal_c210.dts |    4 ++++
>>>>>     arch/arm/boot/dts/exynos4412-odroidx.dts        |    4 ++++
>>>>>     arch/arm/boot/dts/exynos4412-smdk4412.dts       |    4 ++++
>>>>>     arch/arm/boot/dts/exynos4412-tiny4412.dts       |    4 ++++
>>>>>     8 files changed, 36 insertions(+)
>>>>
>>>>
>>>>
>>>> Looks good. Unfortunately this is still going to break secure firmware
>>>> enabled boards, because l2x0_of_init() does not check if the node is
>>>> enabled.
>>>>
>>>
>>> Is the following check in l2x0_of_init() not enough?
>>>
>>> 1002 |-------np = of_find_matching_node(NULL, l2x0_ids);
>>> 1003 |-------if (!np)
>>> 1004 |-------|-------return -ENODEV;
>>
>>
>> It only looks for a matching node without checking its status property.
>>
>
> Hmm ... so in that case, will this work?
>
> diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
> index 7abde2ce..ebcab01 100644
> --- a/arch/arm/mm/cache-l2x0.c
> +++ b/arch/arm/mm/cache-l2x0.c
> @@ -973,11 +973,17 @@ int __init l2x0_of_init(u32 aux_val, u32 aux_mask)
>          struct device_node *np;
>          const struct l2x0_of_data *data;
>          struct resource res;
> +       const char *status;
>
>          np = of_find_matching_node(NULL, l2x0_ids);
>          if (!np)
>                  return -ENODEV;
>
> +       status = of_get_property(np, "status", NULL);
> +       if (status)
> +               if (strcmp(status, "okay"))
> +                       return -ENODEV;
> +
>          if (of_address_to_resource(np, 0, &res))
>                  return -ENODEV;

Yes, this would work, but there is already

int of_device_is_available(const struct device_node *device)

which can be used instead of open coding this.

Best regards,
Tomasz
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
index 7abde2ce..ebcab01 100644
--- a/arch/arm/mm/cache-l2x0.c
+++ b/arch/arm/mm/cache-l2x0.c
@@ -973,11 +973,17 @@  int __init l2x0_of_init(u32 aux_val, u32 aux_mask)
        struct device_node *np;
        const struct l2x0_of_data *data;
        struct resource res;
+       const char *status;

        np = of_find_matching_node(NULL, l2x0_ids);
        if (!np)
                return -ENODEV;

+       status = of_get_property(np, "status", NULL);
+       if (status)
+               if (strcmp(status, "okay"))
+                       return -ENODEV;
+
        if (of_address_to_resource(np, 0, &res))
                return -ENODEV;