All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] U-Boot, dm, ubi: struct device is declared twice
Date: Mon, 05 May 2014 07:55:20 +0200	[thread overview]
Message-ID: <536727C8.6000207@denx.de> (raw)
In-Reply-To: <CAPnjgZ0BdNcstSbCZiNa-6ZPehkT=c_+2_wyMO_7KB23T7j3jA@mail.gmail.com>

Hello Simon,

Am 02.05.2014 16:29, schrieb Simon Glass:
> Hi,
>
> On 2 May 2014 01:16, Heiko Schocher<hs@denx.de>  wrote:
>> Hello Marek,
>>
>> Am 02.05.2014 08:06, schrieb Marek Vasut:
>>
>>> On Friday, May 02, 2014 at 07:19:01 AM, Heiko Schocher wrote:
>>>>
>>>> Hello Simon, Marek,
>>>>
>>>> just updating to current mainline code and defining
>>>> CONFIG_SYS_GENERIC_BOARD pops up the following error:
>>>>
>>>>     CC      common/board_r.o
>>>> In file included from include/linux/mtd/flashchip.h:21:0,
>>>>                     from include/linux/mtd/nand.h:31,
>>>>                     from include/nand.h:39,
>>>>                     from common/board_r.c:40:
>>>> include/ubi_uboot.h:202:8: error: redefinition of 'struct device'
>>>>     struct device {
>>>>            ^
>>>> In file included from include/dm.h:10:0,
>>>>                     from common/board_r.c:21:
>>>> include/dm/device.h:56:8: note: originally defined here
>>>>     struct device {
>>>>            ^
>>>> make[1]: *** [common/board_r.o] Fehler 1
>>>> make: *** [common] Fehler 2
>>>> pollux:u-boot hs [20140502] $
>>>>
>>>> for a not yet mainlined imx6 board using UBI/UBIFS on nand. I am
>>>> currently sync current Linux MTD/UBI and UBIFS code to U-Boot, but
>>>> I think this error should pop up for all boards using DM and UBI ...
>>>
>>>
>>> In the ideal case, we should use the same struct device for both UBI and
>>> DM, but
>>
>>
>> Yes, that was also my first thought ...
>>
>>
>>> we cannot do that. Thus, renaming the DM struct device would be the best
>>> option
>>> for now.
>>
>>
>> Ok. I prepare a patch for this.
>
> Linux also has struct device, so I wondered how it avoids this problem
> and took a look.

Yes, the MTD/UBI and UBIFS subsystem is Code from Linux and it uses
the linux "struct device". I wonder, how DM and UBI compile together.

Is this tried somewhere?

(As I see drivers/usb/musb-new uses also "struct device" ...)

> This header file seems like a special thing for U-Boot - I wonder if

Yes, it includes some missing defines, structs for the UBI Subsystem,
so we could use Linux Code ... but we have also "include/linux/compat.h
for this ... Maybe it is worth to delete this include/ubi_uboot.h
and move the missing symbols to include/linux/compat.h?

> it would be better to use #define at the top of the C file for the

Yes, I thought about this too ...

The UBI subsystem in U-Boot has defined "UBI_LINUX" instead of
"__UBOOT__" ... which surprised me too.

  maybe I prepare such a change (delete "UBI_LINUX" and use
"__UBOOT__") for the new sync with current Linux MTD/UBI and UBIFS
layer?

> compatibility stuff (#define device ubi_device) rather than modify dm?

Hmm... I can try this ... but I am not really happy to have
such a define.

> It does seem very strange to me, particularly as from what I can tell,
> struct device is just a cut down version of the Linux struct.

Wouldn;t it be better to move this to include/linux/device.h then?

Looking in U-Boot:include/dm/device.h "struct device":

struct device {
*        struct driver *driver;
*        const char *name;
*        void *platdata;
*        int of_offset;
         struct device *parent;
*        void *priv;
*        struct uclass *uclass;
*        void *uclass_priv;
*        struct list_head uclass_node;
*        struct list_head child_head;
*        struct list_head sibling_node;
*        uint32_t flags;
};

All "*" are different to current mainline linux or not in it ...
so I prefer first to rename the DM "struct device" into for example
"struct u_device" ... Maybe we can sync them once with the linux
"struct device"

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

  reply	other threads:[~2014-05-05  5:55 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-02  5:19 [U-Boot] U-Boot, dm, ubi: struct device is declared twice Heiko Schocher
2014-05-02  5:48 ` Wolfgang Denk
2014-05-02  6:06 ` Marek Vasut
2014-05-02  7:16   ` Heiko Schocher
2014-05-02 14:29     ` Simon Glass
2014-05-05  5:55       ` Heiko Schocher [this message]
2014-05-05 17:17         ` Simon Glass

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=536727C8.6000207@denx.de \
    --to=hs@denx.de \
    --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.