From: Kever Yang <kever.yang@rock-chips.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] U-Boot of-platdata issue
Date: Tue, 14 Feb 2017 09:09:01 +0800 [thread overview]
Message-ID: <58A258AD.7070004@rock-chips.com> (raw)
In-Reply-To: <2f81919c-b561-a708-5cca-dd4cfabfa724@samsung.com>
Hi Simon, Jaehoon,
On 02/13/2017 05:51 PM, Jaehoon Chung wrote:
> On 02/13/2017 06:23 PM, Kever Yang wrote:
>> Hi Simon,
>>
>> On 01/16/2017 12:15 PM, Simon Glass wrote:
>>> Hi Kever,
>>>
>>> On 15 January 2017 at 18:28, Kever Yang <kever.yang@rock-chips.com> wrote:
>>>> Hi Simon,
>>>>
>>>> I met two issue when using of-platdata
>>>>
>>>> 1. compitable name with '.'
>>>> I get compile error as below:
>>>> In file included from include/dt-structs.h:16:0,
>>>> from spl/dts/dt-platdata.c:3:
>>>> include/generated/dt-structs.h:26:35: error: expected identifier or ?(?
>>>> before numeric constant
>>>> struct dtd_rockchip_rk3399_sdhci_5.1 {
>>>> ^
>>>> spl/dts/dt-platdata.c:41:42: error: expected identifier or ?(? before
>>>> numeric constant
>>>> static struct dtd_rockchip_rk3399_sdhci_5.1 dtv_sdhci_at_fe330000 = {
>>>> ^
>>>> spl/dts/dt-platdata.c:55:15: error: ?dtv_sdhci_at_fe330000? undeclared here
>>>> (not in a function)
>>>> .platdata = &dtv_sdhci_at_fe330000,
>>>> ^
>>>> make[2]: *** [spl/dts/dt-platdata.o] Error 1
>>>> make[1]: *** [spl/u-boot-spl] Error 2
>>>> make: *** [__build_one_by_one] Error 2
>>>>
>>>> The dts node starts like this:
>>>> sdhci: sdhci at fe330000 {
>>>> u-boot,dm-pre-reloc;
>>>> compatible = "rockchip,rk3399-sdhci-5.1",
>>>> "arasan,sdhci-5.1";
>>>> ...
>>> That just involves replacing '.' with '_'. I sent a patch.
>>>
>>>> 2. multi compatible name
>>>> When a dts node have more than one compatible name, which is prefer to use?
>>>> for example, we have two dwmmc compatible name in rk3399, the tool is using
>>>> the first one,
>>>> while the source code using the last one.
>>>>
>>>> "drivers/mmc/rockchip_dw_mmc.c"
>>>> 23 struct rockchip_mmc_plat {
>>>> 24 #if CONFIG_IS_ENABLED(OF_PLATDATA)
>>>> 25 struct dtd_rockchip_rk3288_dw_mshc dtplat;
>>>> 26 #endif
>>>> 27 struct mmc_config cfg;
>>>> 28 struct mmc mmc;
>>>> 29 };
>>>> ...
>>>> dts node
>>>> sdmmc: dwmmc at fe320000 {
>>>> compatible = "rockchip,rk3399-dw-mshc",
>>>> "rockchip,rk3288-dw-mshc";
>>> I'm not sure of the best solution here (other than putting more
>>> on-chip SRAM in your devices hint hint :-)
>>>
>>> One option is something like:
>>>
>>> struct rockchip_mmc_plat {
>>> #if CONFIG_IS_ENABLED(OF_PLATDATA)
>>> #ifdef CONFIG_ROCKCHIP_RK3288
>>> struct dtd_rockchip_rk3288_dw_mshc dtplat;
>>> #elif defined(CONFIG_ROCKCHIP_RK399)
>>> struct dtd_rockchip_rk399_dw_mshc dtplat;
>>> #endif
>>> #endif
>>>
>>> Obviously we don't want that as it is putting SoC-specific stuff in the driver.
>>>
>>> IMO the compatible strings are being misused a bit. Can there not be a
>>> compatible string which is common to all rockchip devices which use
>>> this IP? Something like "rockchip,dw-mshc-v1"? Then you can avoid
>>> adding a new compatible string every time you use the same IP in a
>>> device.
>> Agree, but... this is from kernel, we can't control it unless all kernel maintainers
>> have the same idea.
> does it use just "rockchip,dw-mshc"? Maybe this can be common compatible for rockchip.
> If it needs add the other compatible in future, it should be added the specific compatible at that time.
>
I don't think we will have a change in dts compatible for U-Boot dts,
because we will always using dts
file from kernel, so we will use it as is.
We can use "rockchip,rk3288-dw-mshc" for rk3288 and rk3399, here is the
document.
and for dw-mshc:
Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
* compatible: should be
- "rockchip,rk2928-dw-mshc": for Rockchip RK2928 and following,
before RK3288
- "rockchip,rk3288-dw-mshc": for Rockchip RK3288
- "rockchip,rk3399-dw-mshc", "rockchip,rk3288-dw-mshc": for
Rockchip RK3399
For the compatible name, there had some discuss before, like this patch:
https://lists.gt.net/linux/kernel/2372182
So for the of-platdata, we can use "rockchip,rk3288-dw-mshc" to generate
the structure.
Thanks,
- Kever
>>> Another option would be for dtoc to #define each compatible string to
>>> the first one. If you think that would work, I could do a patch.
>> I think we can try with the first one in the driver for of-platdata,
>> this would have problem for the first compatible name is different but
>> they share the same driver, like syscon. For syscon, you have resolved with
>> a special dirver, not sure if other driver has the same problem.
>>
>> Could you help to make a patch for this solution?
>>
>> Thanks,
>> - Kever
>>> Regards,
>>> Simon
>>>
>>>
>>>
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
>
>
>
next prev parent reply other threads:[~2017-02-14 1:09 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-16 1:28 [U-Boot] U-Boot of-platdata issue Kever Yang
2017-01-16 4:15 ` Simon Glass
2017-02-13 9:23 ` Kever Yang
2017-02-13 9:51 ` Jaehoon Chung
2017-02-14 1:09 ` Kever Yang [this message]
2017-02-16 20:43 ` Simon Glass
2017-04-25 2:29 ` Kever Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=58A258AD.7070004@rock-chips.com \
--to=kever.yang@rock-chips.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.