diff mbox

[U-Boot,v2,5/9] sunxi: generic sun7i build infrastructure.

Message ID 1395438866-1193-5-git-send-email-ijc@hellion.org.uk
State Changes Requested
Delegated to: Albert ARIBAUD
Headers show

Commit Message

Ian Campbell March 21, 2014, 9:54 p.m. UTC
This has been stripped back for mainlining and supports only sun7i booting via
FEL mode. These changes are not useful by themselves but are split out to make
the patch sizes more manageable.

As well as the following signed-off-by the sunxi branch shows commits to these
files authored by the following:
  Almo Nito
  Carl van Schaik
  FUKAUMI Naoki
  hehopmajieh
  j
  Sergey Lapin
  Tom Cubie

Signed-off-by: Adam Sampson <ats@offog.org>
Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Emilio López <emilio@elopez.com.ar>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Henrik Nordstrom <henrik@henriknordstrom.net>
Signed-off-by: Jens Kuske <jenskuske@gmail.com>
Signed-off-by: Luc Verhaegen <libv@skynet.be>
Signed-off-by: Luke Leighton <lkcl@lkcl.net>
Signed-off-by: Oliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Patrick Wood <patrickhwood@gmail.com>
Signed-off-by: Stefan Roese <sr@denx.de>
Signed-off-by: Wills Wang <wills.wang.open@gmail.com>
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
---
v2: Based on u-boot-sunxi.git#sunxi d9aa5dd3d15c "sunxi: mmc:
checkpatch whitespace fixes" with v2014.04-rc2 merged in:
    - sunxi-common.h updates, including pulling some command additions back
      from the non-FEL patch and switchin to bootm_size not BOOTMAPSZ

v1: Based on u-boot-sunxi.git#sunxi commit d854c4de2f57 "arm: Handle .gnu.hash
section in ldscripts" vs v2014.01.
---
 arch/arm/cpu/armv7/Makefile                 |   2 +-
 arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds |  59 +++++++++++
 arch/arm/include/asm/arch-sunxi/spl.h       |  20 ++++
 board/sunxi/Makefile                        |   1 +
 include/configs/sun7i.h                     |  24 +++++
 include/configs/sunxi-common.h              | 153 ++++++++++++++++++++++++++++
 6 files changed, 258 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
 create mode 100644 arch/arm/include/asm/arch-sunxi/spl.h
 create mode 100644 include/configs/sun7i.h
 create mode 100644 include/configs/sunxi-common.h

Comments

Wolfgang Denk March 22, 2014, 6:46 a.m. UTC | #1
Dear Ian Campbell,

In message <1395438866-1193-5-git-send-email-ijc@hellion.org.uk> you wrote:
> This has been stripped back for mainlining and supports only sun7i booting via
> FEL mode. These changes are not useful by themselves but are split out to make
> the patch sizes more manageable.
> 
> As well as the following signed-off-by the sunxi branch shows commits to these
> files authored by the following:

What does that mean?  I cannot find these names in the SoB lines?

>   Almo Nito
>   Carl van Schaik
>   FUKAUMI Naoki
>   hehopmajieh
>   j

And these are not actually names ...  nor do we have the e-mail
addresses...



Best regards,

Wolfgang Denk
Ian Campbell March 22, 2014, 10:04 a.m. UTC | #2
On Sat, 2014-03-22 at 07:46 +0100, Wolfgang Denk wrote:
> Dear Ian Campbell,
> 
> In message <1395438866-1193-5-git-send-email-ijc@hellion.org.uk> you wrote:
> > This has been stripped back for mainlining and supports only sun7i booting via
> > FEL mode. These changes are not useful by themselves but are split out to make
> > the patch sizes more manageable.
> > 
> > As well as the following signed-off-by the sunxi branch shows commits to these
> > files authored by the following:
> 
> What does that mean?  I cannot find these names in the SoB lines?

I explained the process by which I arrived at these lists in 0/9. It
means that they appear as an author for a commit in the history in the
u-boot-sunxi.git, but did not supply an S-o-b. However I am adding my
own S-o-b under clause (b) of the DCO, which I believe applies here.

It's entirely possible that none of these peoples' contributions still
remain in the files being upstreamed, but figuring that out for sure
would be a large and manual task. As I explained in 0/9 I prefer to
over-credit by mentioning people whose actual contributions no longer
remain rather than fail to credit someone whose contribution does
remain. Even if their code doesn't remain it could be argued that they
contributed to the evolution of the code. I didn't really want to get
into the whole question of whether any individual contribution was
sufficient to deserve credit or substantive enough to endow a copyright
claim etc.

(git blame does not help here BTW, it will just tell you the last person
to touch a line, not whether that change was substantive from a
copyright PoV etc)

> >   Almo Nito
> >   Carl van Schaik
> >   FUKAUMI Naoki
> >   hehopmajieh
> >   j
> 
> And these are not actually names ...  nor do we have the e-mail
> addresses...

I have email addresses from the commit authorship, which I should indeed
have included here, I shall definitely do that for v3. Please let me
know whether or not I should also spend hours trawling down the precise
pedigree of each line of code.

Ian.
Wolfgang Denk March 22, 2014, 12:33 p.m. UTC | #3
Dear Ian,

In message <1395482650.2234.104.camel@hastur.hellion.org.uk> you wrote:
>
> > What does that mean?  I cannot find these names in the SoB lines?
> 
> I explained the process by which I arrived at these lists in 0/9. It
> means that they appear as an author for a commit in the history in the
> u-boot-sunxi.git, but did not supply an S-o-b. However I am adding my
> own S-o-b under clause (b) of the DCO, which I believe applies here.

Please read (again) what the Developer's Certificate of Origin means.
It appears that such code would fall under clause (c):

	The contribution was provided directly to me by some other
	person who certified (a), (b) or (c) and I have not modified
	it.

Did for example "j" or "hehopmajieh" provide such certificates to you?

> It's entirely possible that none of these peoples' contributions still
> remain in the files being upstreamed, but figuring that out for sure
> would be a large and manual task. As I explained in 0/9 I prefer to
> over-credit by mentioning people whose actual contributions no longer
> remain rather than fail to credit someone whose contribution does

The Sob is only partially for crediting; the major purpose is to make
sure we really have the full rights to distribute such code under the
listed licenses.  To guarantee that, the chain of certificates mustnot
be interrupted.

> I have email addresses from the commit authorship, which I should indeed
> have included here, I shall definitely do that for v3. Please let me
> know whether or not I should also spend hours trawling down the precise
> pedigree of each line of code.

The SoB lines need real names plus real, working mail addresses.  The
Linux "Documentation/SubmittingPatches" filemakes this clear:

	using your real name (sorry, no pseudonyms or anonymous contributions.)



Best regards,

Wolfgang Denk
Hans de Goede March 22, 2014, 3:12 p.m. UTC | #4
Hi,

On 03/22/2014 01:33 PM, Wolfgang Denk wrote:
> Dear Ian,
> 
> In message <1395482650.2234.104.camel@hastur.hellion.org.uk> you wrote:
>>
>>> What does that mean?  I cannot find these names in the SoB lines?
>>
>> I explained the process by which I arrived at these lists in 0/9. It
>> means that they appear as an author for a commit in the history in the
>> u-boot-sunxi.git, but did not supply an S-o-b. However I am adding my
>> own S-o-b under clause (b) of the DCO, which I believe applies here.
> 
> Please read (again) what the Developer's Certificate of Origin means.
> It appears that such code would fall under clause (c):
> 
> 	The contribution was provided directly to me by some other
> 	person who certified (a), (b) or (c) and I have not modified
> 	it.

No as said before the parts for which we don't have a Signed-off-by
for falls under b), since we took it from existing code which has clear
GPLv2+ license headers on each and every file.

b) Reads:

        (b) The contribution is based upon previous work that, to the best
            of my knowledge, is covered under an appropriate open source
            license and I have the right under that license to submit that
            work with modifications, whether created in whole or in part
            by me, under the same open source license (unless I am
            permitted to submit under a different license), as indicated
            in the file; or




> 
> Did for example "j" or "hehopmajieh" provide such certificates to you?
> 
>> It's entirely possible that none of these peoples' contributions still
>> remain in the files being upstreamed, but figuring that out for sure
>> would be a large and manual task. As I explained in 0/9 I prefer to
>> over-credit by mentioning people whose actual contributions no longer
>> remain rather than fail to credit someone whose contribution does
> 
> The Sob is only partially for crediting; the major purpose is to make
> sure we really have the full rights to distribute such code under the
> listed licenses.  To guarantee that, the chain of certificates mustnot
> be interrupted.

Right, and we do since the files we're basing our work on is GPLv2+ licensed,
the purpose of the listing of extra names other then the Signed-off-by:
tags is for solely for attribution.

>> I have email addresses from the commit authorship, which I should indeed
>> have included here, I shall definitely do that for v3. Please let me
>> know whether or not I should also spend hours trawling down the precise
>> pedigree of each line of code.
> 
> The SoB lines need real names plus real, working mail addresses.  The
> Linux "Documentation/SubmittingPatches" filemakes this clear:
> 
> 	using your real name (sorry, no pseudonyms or anonymous contributions.)

Right but these are not Signed-off-by lines. Just as I may thank a tester
in a commit message with just his name because he does not want me to disclose
his email address, we are attributing people here with just there names.

Note in some cases we do have email addresses and Ian has said he will add those
in the next version, but we cannot magically conjure up Signed-off-by's which we
don't have, and section b) says we don't need to since all the original files
have a clear GPLv2+ license header.

Regards,

Hans
Ian Campbell March 22, 2014, 3:26 p.m. UTC | #5
On Sat, 2014-03-22 at 16:12 +0100, Hans de Goede wrote:
> Hi,
> 
> On 03/22/2014 01:33 PM, Wolfgang Denk wrote:
> > Dear Ian,
> > 
> > In message <1395482650.2234.104.camel@hastur.hellion.org.uk> you wrote:
> >>
> >>> What does that mean?  I cannot find these names in the SoB lines?
> >>
> >> I explained the process by which I arrived at these lists in 0/9. It
> >> means that they appear as an author for a commit in the history in the
> >> u-boot-sunxi.git, but did not supply an S-o-b. However I am adding my
> >> own S-o-b under clause (b) of the DCO, which I believe applies here.
> > 
> > Please read (again) what the Developer's Certificate of Origin means.
> > It appears that such code would fall under clause (c):
> > 
> > 	The contribution was provided directly to me by some other
> > 	person who certified (a), (b) or (c) and I have not modified
> > 	it.
> 
> No as said before the parts for which we don't have a Signed-off-by
> for falls under b), since we took it from existing code which has clear
> GPLv2+ license headers on each and every file.

Thanks, this is just what I was just about to say.

> b) Reads:
> 
>         (b) The contribution is based upon previous work that, to the best
>             of my knowledge, is covered under an appropriate open source
>             license and I have the right under that license to submit that
>             work with modifications, whether created in whole or in part
>             by me, under the same open source license (unless I am
>             permitted to submit under a different license), as indicated
>             in the file; or

> > Did for example "j" or "hehopmajieh" provide such certificates to you?
> > 
> >> It's entirely possible that none of these peoples' contributions still
> >> remain in the files being upstreamed, but figuring that out for sure
> >> would be a large and manual task. As I explained in 0/9 I prefer to
> >> over-credit by mentioning people whose actual contributions no longer
> >> remain rather than fail to credit someone whose contribution does
> > 
> > The Sob is only partially for crediting; the major purpose is to make
> > sure we really have the full rights to distribute such code under the
> > listed licenses.  To guarantee that, the chain of certificates mustnot
> > be interrupted.
> 
> Right, and we do since the files we're basing our work on is GPLv2+ licensed,
> the purpose of the listing of extra names other then the Signed-off-by:
> tags is for solely for attribution.

Right.

> Note in some cases we do have email addresses and Ian has said he will add those
> in the next version,

Actually in every case we have email addresses, I just omitted them up
until now (since a credit doesn't strictly need one).
Wolfgang Denk March 22, 2014, 7:31 p.m. UTC | #6
Dear Hans de Goede,

In message <532DA872.5000606@redhat.com> you wrote:
> 
> No as said before the parts for which we don't have a Signed-off-by
> for falls under b), since we took it from existing code which has clear
> GPLv2+ license headers on each and every file.

Can the code be properly attributed, i. e. does it have proper
Signed-off-by: lines?

> > 	using your real name (sorry, no pseudonyms or anonymous contributions.)
> 
> Right but these are not Signed-off-by lines. Just as I may thank a tester
> in a commit message with just his name because he does not want me to disclose
> his email address, we are attributing people here with just there names.

If these people attributed to the code, we should have their commits
with their respective Signed-off-by: lines.

> Note in some cases we do have email addresses and Ian has said he will add those
> in the next version, but we cannot magically conjure up Signed-off-by's which we
> don't have, and section b) says we don't need to since all the original files
> have a clear GPLv2+ license header.

I don't see this so simple.  The code was derived from some earlier
mainline U-Boot version, for which a proper chain of SoBs was in
place.  Then the code was modified in some ways by some unknown people
who did not provide their Developer's Certificate of Origin.  So what
gives us reason to believe that these modifications can be freely
reused, i. e. that they do not for example violate third party IP
rights?

Section (b) applies for example in cases where an employer has a team
of people working on such tasks, and uses a single contact as
interface to the community, so the original authors are not directly
visible.  But unless you contract such work (and make sure fromt he
contract terms that you have the appropriate rights), it is IMO
difficult or impossible to certify the Developer's Certificate of
Origin for modifications done by others - the fact that there was a
license header in the code before is good, but not good enough.

Best regards,

Wolfgang Denk
Hans de Goede March 22, 2014, 8:07 p.m. UTC | #7
Hi,

On 03/22/2014 08:31 PM, Wolfgang Denk wrote:
> Dear Hans de Goede,
> 
> In message <532DA872.5000606@redhat.com> you wrote:
>>
>> No as said before the parts for which we don't have a Signed-off-by
>> for falls under b), since we took it from existing code which has clear
>> GPLv2+ license headers on each and every file.
> 
> Can the code be properly attributed, i. e. does it have proper
> Signed-off-by: lines?
> 
>>> 	using your real name (sorry, no pseudonyms or anonymous contributions.)
>>
>> Right but these are not Signed-off-by lines. Just as I may thank a tester
>> in a commit message with just his name because he does not want me to disclose
>> his email address, we are attributing people here with just there names.
> 
> If these people attributed to the code, we should have their commits
> with their respective Signed-off-by: lines.

No, just no. How hard is it to read ? section b) clearly states:

"The contribution is based upon previous work that, to the best of my knowledge,
is covered under an appropriate open source license and I have the right under that
license to submit that work with modifications ..."

Nothing more nothing less, you're reading a whole lot stuff in between the
lines which is not there. Esp. notice the "to the best of my knowledge".

I don't remember the exact details, as I was not really active in the sunci community
at the time, but after some discussion we got the u-boot code from Allwinner themselves,
under the GPL, with GPL headers in place. See ie the first commit in the
sunxi repo:
https://github.com/linux-sunxi/u-boot-sunxi/commit/a38e8203867075a3cabc2d690855366852f87635

Which even has Tom Cubie <tangliang@allwinnertech.com> set as author, but does not
have his Signed-off-by, but does has "Henrik Nordstrom <henrik@henriknordstrom.net>"
Signed-off-by, which is 100% ok under section b).

Regards,

Hans

p.s.

This will be my last mail in the thread wrt the whole Signed-off-by discussion, your needless
strict reading of the s-o-b guidelines is causing way too much negative energy for me. I hope
you and Ian can work out a solution for this.
Marek Vasut March 24, 2014, 9:01 p.m. UTC | #8
On Friday, March 21, 2014 at 10:54:22 PM, Ian Campbell wrote:
> This has been stripped back for mainlining and supports only sun7i booting
> via FEL mode. These changes are not useful by themselves but are split out
> to make the patch sizes more manageable.
> 
> As well as the following signed-off-by the sunxi branch shows commits to
> these files authored by the following:
>   Almo Nito
>   Carl van Schaik
>   FUKAUMI Naoki
>   hehopmajieh
>   j
>   Sergey Lapin
>   Tom Cubie
> 
> Signed-off-by: Adam Sampson <ats@offog.org>
> Signed-off-by: Aleksei Mamlin <mamlinav@gmail.com>
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> Signed-off-by: Emilio López <emilio@elopez.com.ar>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Henrik Nordstrom <henrik@henriknordstrom.net>
> Signed-off-by: Jens Kuske <jenskuske@gmail.com>
> Signed-off-by: Luc Verhaegen <libv@skynet.be>
> Signed-off-by: Luke Leighton <lkcl@lkcl.net>
> Signed-off-by: Oliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Patrick Wood <patrickhwood@gmail.com>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Signed-off-by: Wills Wang <wills.wang.open@gmail.com>
> Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
> ---
> v2: Based on u-boot-sunxi.git#sunxi d9aa5dd3d15c "sunxi: mmc:
> checkpatch whitespace fixes" with v2014.04-rc2 merged in:
>     - sunxi-common.h updates, including pulling some command additions back
>       from the non-FEL patch and switchin to bootm_size not BOOTMAPSZ
> 
> v1: Based on u-boot-sunxi.git#sunxi commit d854c4de2f57 "arm: Handle
> .gnu.hash section in ldscripts" vs v2014.01.
> ---
>  arch/arm/cpu/armv7/Makefile                 |   2 +-
>  arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds |  59 +++++++++++
>  arch/arm/include/asm/arch-sunxi/spl.h       |  20 ++++
>  board/sunxi/Makefile                        |   1 +
>  include/configs/sun7i.h                     |  24 +++++
>  include/configs/sunxi-common.h              | 153
> ++++++++++++++++++++++++++++ 6 files changed, 258 insertions(+), 1
> deletion(-)
>  create mode 100644 arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
>  create mode 100644 arch/arm/include/asm/arch-sunxi/spl.h
>  create mode 100644 include/configs/sun7i.h
>  create mode 100644 include/configs/sunxi-common.h
> 
> diff --git a/arch/arm/cpu/armv7/Makefile b/arch/arm/cpu/armv7/Makefile
> index 119ebb3..ddf00f3 100644
> --- a/arch/arm/cpu/armv7/Makefile
> +++ b/arch/arm/cpu/armv7/Makefile
> @@ -12,7 +12,7 @@ obj-y	+= cache_v7.o
>  obj-y	+= cpu.o
>  obj-y	+= syslib.o
> 
> -ifneq
> ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CON
> FIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY),) +ifneq
> ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CON
> FIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI),
> ) ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
>  obj-y	+= lowlevel_init.o
>  endif
> diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds new file mode 100644
> index 0000000..cf02300
> --- /dev/null
> +++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> @@ -0,0 +1,59 @@
> +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
> +OUTPUT_ARCH(arm)
> +ENTRY(s_init)
> +SECTIONS
> +{
> + . = 0x00002000;
> + . = ALIGN(4);
> + .text :
> + {


This file is unreadable. Can you not actually merge it into u-boot-spl.lds with 
some #ifdef ?

[...]

> +/*
> + * Display CPU information
> + */
> +#define CONFIG_DISPLAY_CPUINFO
> +
> +/* Serial & console */
> +#define CONFIG_SYS_NS16550
> +#define CONFIG_SYS_NS16550_SERIAL
> +/* ns16550 reg in the low bits of cpu reg */
> +#define CONFIG_SYS_NS16550_REG_SIZE	(-4)
> +#define CONFIG_SYS_NS16550_CLK		(24000000)

The braces are not needed .

> +#define CONFIG_SYS_NS16550_COM1		SUNXI_UART0_BASE
> +#define CONFIG_SYS_NS16550_COM2		SUNXI_UART1_BASE
> +#define CONFIG_SYS_NS16550_COM3		SUNXI_UART2_BASE
> +#define CONFIG_SYS_NS16550_COM4		SUNXI_UART3_BASE
[...]
Ian Campbell March 27, 2014, 10:05 p.m. UTC | #9
On Mon, 2014-03-24 at 22:01 +0100, Marek Vasut wrote:
> > diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> > b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds new file mode 100644
> > index 0000000..cf02300
> > --- /dev/null
> > +++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds

> This file is unreadable. Can you not actually merge it into u-boot-spl.lds with 
> some #ifdef ?

They look pretty much entirely different to me. I should sort out the
whitespace and stuff though, it is a mess in that regard. Perhaps that
will help.

Ian.
Marek Vasut March 27, 2014, 10:37 p.m. UTC | #10
On Thursday, March 27, 2014 at 11:05:21 PM, Ian Campbell wrote:
> On Mon, 2014-03-24 at 22:01 +0100, Marek Vasut wrote:
> > > diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> > > b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds new file mode 100644
> > > index 0000000..cf02300
> > > --- /dev/null
> > > +++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> > 
> > This file is unreadable. Can you not actually merge it into
> > u-boot-spl.lds with some #ifdef ?
> 
> They look pretty much entirely different to me. I should sort out the
> whitespace and stuff though, it is a mess in that regard. Perhaps that
> will help.

Likely, but is it really necessary for those two files to be so different or is 
this some legacy stuff in the sunxi-specific .lds file?

Best regards,
Marek Vasut
Ian Campbell March 28, 2014, 8:26 a.m. UTC | #11
On Thu, 2014-03-27 at 23:37 +0100, Marek Vasut wrote:
> On Thursday, March 27, 2014 at 11:05:21 PM, Ian Campbell wrote:
> > On Mon, 2014-03-24 at 22:01 +0100, Marek Vasut wrote:
> > > > diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> > > > b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds new file mode 100644
> > > > index 0000000..cf02300
> > > > --- /dev/null
> > > > +++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> > > 
> > > This file is unreadable. Can you not actually merge it into
> > > u-boot-spl.lds with some #ifdef ?
> > 
> > They look pretty much entirely different to me. I should sort out the
> > whitespace and stuff though, it is a mess in that regard. Perhaps that
> > will help.
> 
> Likely, but is it really necessary for those two files to be so different or is 
> this some legacy stuff in the sunxi-specific .lds file?

The standard lds file is pretty standard. This -fel version is for a
special boot mode which sunxi processors have[0] which allows for
booting over USB OTG, so the image needs to be built appropriately.

Ian.

[0] http://linux-sunxi.org/FEL
Marek Vasut March 28, 2014, 8:37 a.m. UTC | #12
On Friday, March 28, 2014 at 09:26:50 AM, Ian Campbell wrote:
> On Thu, 2014-03-27 at 23:37 +0100, Marek Vasut wrote:
> > On Thursday, March 27, 2014 at 11:05:21 PM, Ian Campbell wrote:
> > > On Mon, 2014-03-24 at 22:01 +0100, Marek Vasut wrote:
> > > > > diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> > > > > b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds new file mode 100644
> > > > > index 0000000..cf02300
> > > > > --- /dev/null
> > > > > +++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
> > > > 
> > > > This file is unreadable. Can you not actually merge it into
> > > > u-boot-spl.lds with some #ifdef ?
> > > 
> > > They look pretty much entirely different to me. I should sort out the
> > > whitespace and stuff though, it is a mess in that regard. Perhaps that
> > > will help.
> > 
> > Likely, but is it really necessary for those two files to be so different
> > or is this some legacy stuff in the sunxi-specific .lds file?
> 
> The standard lds file is pretty standard. This -fel version is for a
> special boot mode which sunxi processors have[0] which allows for
> booting over USB OTG, so the image needs to be built appropriately.

OK, I will need to fix up my mk802 rev. 1 (the old and crappy one ! ) and check 
this FEL stuff. I would really want to avoid one more linker script if possible, 
since it adds to maintainance overhead and technological debt ... but if you say 
it's necessary, I will not block it.

btw. try popping up at #u-boot @ irc.freenode.net , it'd be nice to have you 
around!

Best regards,
Marek Vasut
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/Makefile b/arch/arm/cpu/armv7/Makefile
index 119ebb3..ddf00f3 100644
--- a/arch/arm/cpu/armv7/Makefile
+++ b/arch/arm/cpu/armv7/Makefile
@@ -12,7 +12,7 @@  obj-y	+= cache_v7.o
 obj-y	+= cpu.o
 obj-y	+= syslib.o
 
-ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY),)
+ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI),)
 ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
 obj-y	+= lowlevel_init.o
 endif
diff --git a/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
new file mode 100644
index 0000000..cf02300
--- /dev/null
+++ b/arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds
@@ -0,0 +1,59 @@ 
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(s_init)
+SECTIONS
+{
+ . = 0x00002000;
+ . = ALIGN(4);
+ .text :
+ {
+  *(.text.s_init)
+  *(.text*)
+ }
+ . = ALIGN(4);
+ .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
+ . = ALIGN(4);
+ .data : {
+  *(.data*)
+ }
+ . = ALIGN(4);
+ . = .;
+ . = ALIGN(4);
+ .rel.dyn : {
+  __rel_dyn_start = .;
+  *(.rel*)
+  __rel_dyn_end = .;
+ }
+ .dynsym : {
+  __dynsym_start = .;
+  *(.dynsym)
+ }
+ . = ALIGN(4);
+ .note.gnu.build-id :
+ {
+	*(.note.gnu.build-id)
+ }
+ _end = .;
+ . = ALIGN(4096);
+ .mmutable : {
+  *(.mmutable)
+ }
+ .bss_start __rel_dyn_start (OVERLAY) : {
+  KEEP(*(.__bss_start));
+  __bss_base = .;
+ }
+ .bss __bss_base (OVERLAY) : {
+  *(.bss*)
+   . = ALIGN(4);
+   __bss_limit = .;
+ }
+ .bss_end __bss_limit (OVERLAY) : {
+  KEEP(*(.__bss_end));
+ }
+ /DISCARD/ : { *(.dynstr*) }
+ /DISCARD/ : { *(.dynamic*) }
+ /DISCARD/ : { *(.plt*) }
+ /DISCARD/ : { *(.interp*) }
+ /DISCARD/ : { *(.gnu*) }
+ /DISCARD/ : { *(.note*) }
+}
diff --git a/arch/arm/include/asm/arch-sunxi/spl.h b/arch/arm/include/asm/arch-sunxi/spl.h
new file mode 100644
index 0000000..ff871bc
--- /dev/null
+++ b/arch/arm/include/asm/arch-sunxi/spl.h
@@ -0,0 +1,20 @@ 
+/*
+ * This is a copy of omap3/spl.h:
+ *
+ * (C) Copyright 2012
+ * Texas Instruments, <www.ti.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+#ifndef	_ASM_ARCH_SPL_H_
+#define	_ASM_SPL_H_
+
+#define BOOT_DEVICE_NONE	0
+#define BOOT_DEVICE_XIP		1
+#define BOOT_DEVICE_NAND	2
+#define BOOT_DEVICE_ONE_NAND	3
+#define BOOT_DEVICE_MMC2	5 /*emmc*/
+#define BOOT_DEVICE_MMC1	6
+#define BOOT_DEVICE_XIPWAIT	7
+#define BOOT_DEVICE_MMC2_2      0xff
+#endif
diff --git a/board/sunxi/Makefile b/board/sunxi/Makefile
index 559112e..6483bf4 100644
--- a/board/sunxi/Makefile
+++ b/board/sunxi/Makefile
@@ -9,3 +9,4 @@ 
 # SPDX-License-Identifier:	GPL-2.0+
 #
 obj-y	+= board.o
+obj-y	+= dram_cubietruck.o
diff --git a/include/configs/sun7i.h b/include/configs/sun7i.h
new file mode 100644
index 0000000..9b693f7
--- /dev/null
+++ b/include/configs/sun7i.h
@@ -0,0 +1,24 @@ 
+/*
+ * (C) Copyright 2012-2013 Henrik Nordstrom <henrik@henriknordstrom.net>
+ * (C) Copyright 2013 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+ *
+ * Configuration settings for the Allwinner A20 (sun7i) CPU
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * A20 specific configuration
+ */
+#define CONFIG_SUN7I		/* sun7i SoC generation */
+
+#define CONFIG_SYS_PROMPT		"sun7i# "
+
+/*
+ * Include common sunxi configuration where most the settings are
+ */
+#include <configs/sunxi-common.h>
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
new file mode 100644
index 0000000..114cb36
--- /dev/null
+++ b/include/configs/sunxi-common.h
@@ -0,0 +1,153 @@ 
+/*
+ * (C) Copyright 2012-2012 Henrik Nordstrom <henrik@henriknordstrom.net>
+ *
+ * (C) Copyright 2007-2011
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Configuration settings for the Allwinner sunxi series of boards.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef _SUNXI_COMMON_CONFIG_H
+#define _SUNXI_COMMON_CONFIG_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_SUNXI		/* sunxi family */
+
+#include <asm/arch/cpu.h>	/* get chip and board defs */
+
+#define CONFIG_SYS_TEXT_BASE		0x4a000000
+
+/*
+ * Display CPU information
+ */
+#define CONFIG_DISPLAY_CPUINFO
+
+/* Serial & console */
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_SERIAL
+/* ns16550 reg in the low bits of cpu reg */
+#define CONFIG_SYS_NS16550_REG_SIZE	(-4)
+#define CONFIG_SYS_NS16550_CLK		(24000000)
+#define CONFIG_SYS_NS16550_COM1		SUNXI_UART0_BASE
+#define CONFIG_SYS_NS16550_COM2		SUNXI_UART1_BASE
+#define CONFIG_SYS_NS16550_COM3		SUNXI_UART2_BASE
+#define CONFIG_SYS_NS16550_COM4		SUNXI_UART3_BASE
+
+/* DRAM Base */
+#define CONFIG_SYS_SDRAM_BASE		0x40000000
+#define CONFIG_SYS_INIT_RAM_ADDR	0x0
+#define CONFIG_SYS_INIT_RAM_SIZE	0x8000	/* 32 KiB */
+
+#define CONFIG_SYS_INIT_SP_OFFSET \
+	(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+	(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+#define CONFIG_NR_DRAM_BANKS		1
+#define PHYS_SDRAM_0			CONFIG_SYS_SDRAM_BASE
+#define PHYS_SDRAM_0_SIZE		0x80000000 /* 2 GiB */
+
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_SETEXPR
+
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_INITRD_TAG
+#define CONFIG_CMDLINE_EDITING
+
+/*
+ * Size of malloc() pool
+ * 1MB = 0x100000, 0x100000 = 1024 * 1024
+ */
+#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + (1 << 20))
+
+/* Flat Device Tree (FDT/DT) support */
+#define CONFIG_OF_LIBFDT
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP	/* undef to save memory */
+#define CONFIG_SYS_HUSH_PARSER	/* use "hush" command parser    */
+#define CONFIG_CMD_ECHO
+#define CONFIG_SYS_CBSIZE	256	/* Console I/O Buffer Size */
+#define CONFIG_SYS_PBSIZE	384	/* Print Buffer Size */
+#define CONFIG_SYS_MAXARGS	16	/* max number of command args */
+
+/* Boot Argument Buffer Size */
+#define CONFIG_SYS_BARGSIZE		CONFIG_SYS_CBSIZE
+
+#define CONFIG_SYS_LOAD_ADDR		0x50000000 /* default load address */
+
+/* standalone support */
+#define CONFIG_STANDALONE_LOAD_ADDR	0x50000000
+
+#define CONFIG_SYS_HZ			1000
+
+/* baudrate */
+#define CONFIG_BAUDRATE			115200
+
+/* The stack sizes are set up in start.S using the settings below */
+#define CONFIG_STACKSIZE		(256 << 10)	/* 256 KiB */
+
+/* FLASH and environment organization */
+
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_SYS_MONITOR_LEN		(512 << 10)	/* 512 KiB */
+#define CONFIG_IDENT_STRING		" Allwinner Technology"
+
+#define CONFIG_ENV_SIZE			(128 << 10)	/* 128 KiB */
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+	"bootm_size=0x20000000\0"
+
+#define CONFIG_BOOTDELAY	3
+#define CONFIG_SYS_BOOT_GET_CMDLINE
+#define CONFIG_AUTO_COMPLETE
+
+#include <config_cmd_default.h>
+
+/* Accept zimage + raw ramdisk without mkimage headers */
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_SUPPORT_RAW_INITRD
+
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT		/* with this we can access fat bootfs */
+#define CONFIG_FAT_WRITE	/* enable write access */
+#define CONFIG_CMD_EXT2		/* with this we can access ext2 bootfs */
+#define CONFIG_CMD_EXT4		/* with this we can access ext4 bootfs */
+
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+
+#define CONFIG_SPL
+#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/sunxi/u-boot-spl-fel.lds"
+#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/armv7/sunxi"
+#define CONFIG_SPL_TEXT_BASE		0x2000
+#define CONFIG_SPL_MAX_SIZE		0x4000		/* 16 KiB */
+/* end of 32 KiB in sram */
+#define LOW_LEVEL_SRAM_STACK		0x00008000
+#define CONFIG_SPL_STACK		LOW_LEVEL_SRAM_STACK
+
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
+
+#define CONFIG_CONS_INDEX              1       /* UART0 */
+
+#if !defined CONFIG_ENV_IS_IN_MMC && \
+    !defined CONFIG_ENV_IS_IN_NAND && \
+    !defined CONFIG_ENV_IS_IN_FAT && \
+    !defined CONFIG_ENV_IS_IN_SPI_FLASH
+#define CONFIG_ENV_IS_NOWHERE
+#endif
+
+#endif /* _SUNXI_COMMON_CONFIG_H */