diff mbox

[RFC] arm: add documentation describing Marvell families of SoC

Message ID 1342535201-12907-1-git-send-email-thomas.petazzoni@free-electrons.com (mailing list archive)
State New, archived
Headers show

Commit Message

Thomas Petazzoni July 17, 2012, 2:26 p.m. UTC
As stated in the introduction of the document, the families of ARM
SoCs at Marvell are very complicated, and it is difficult for
newcomers to understand the organization of this SoC family and how it
relates to the Linux kernel support for those hardware platforms.

This document is only at RFC stage for now, it requires reviews and
comments from the Marvell maintainers, the PXA maintainers and the MMP
maintainers. For correctness of course, but also to add any other
information that would be useful. For example, one of the thing that
wasn't clear how to detail in the documentation is how the SoCs relate
to each other in terms of hardware IP blocks. For example, most of the
Kirkwood/Dove/Armada 370-XP/etc. hardware IPs (I2C, SPI, USB, SATA,
etc.) are identical, while the PXA and MMP families are completely
separate.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Gregory Clement <gregory.clement@free-electrons.com>
Cc: Eric Miao <eric.y.miao@gmail.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
Cc: Nicolas Pitre <nico@fluxnic.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Olof Johansson <olof@lixom.net>
---
 Documentation/arm/Marvell/README |  168 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 168 insertions(+)
 create mode 100644 Documentation/arm/Marvell/README

Comments

Andrew Lunn July 17, 2012, 2:59 p.m. UTC | #1
On Tue, Jul 17, 2012 at 04:26:41PM +0200, Thomas Petazzoni wrote:
> As stated in the introduction of the document, the families of ARM
> SoCs at Marvell are very complicated, and it is difficult for
> newcomers to understand the organization of this SoC family and how it
> relates to the Linux kernel support for those hardware platforms.
> 
> This document is only at RFC stage for now, it requires reviews and
> comments from the Marvell maintainers, the PXA maintainers and the MMP
> maintainers. For correctness of course, but also to add any other
> information that would be useful. For example, one of the thing that
> wasn't clear how to detail in the documentation is how the SoCs relate
> to each other in terms of hardware IP blocks. For example, most of the
> Kirkwood/Dove/Armada 370-XP/etc. hardware IPs (I2C, SPI, USB, SATA,
> etc.) are identical, while the PXA and MMP families are completely
> separate.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: Jason Cooper <jason@lakedaemon.net>
> Cc: Gregory Clement <gregory.clement@free-electrons.com>
> Cc: Eric Miao <eric.y.miao@gmail.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
> Cc: Nicolas Pitre <nico@fluxnic.net>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Olof Johansson <olof@lixom.net>
> ---
>  Documentation/arm/Marvell/README |  168 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 168 insertions(+)
>  create mode 100644 Documentation/arm/Marvell/README
> 
> diff --git a/Documentation/arm/Marvell/README b/Documentation/arm/Marvell/README
> new file mode 100644
> index 0000000..4f33433
> --- /dev/null
> +++ b/Documentation/arm/Marvell/README
> @@ -0,0 +1,168 @@
> +ARM Marvell SoCs
> +================
> +
> +This document lists all the ARM Marvell SoCs that are currently
> +supported in mainline by the Linux kernel. As the Marvell families of
> +SoCs are large and complex, it is hard to understand where the support
> +for a particular SoC is available in the Linux kernel. This document
> +tries to help in understanding where those SoCs are supported, and to
> +match them with their corresponding public datasheet, when available.
> +
> +Orion family
> +------------
> +
> +  Flavors:
> +        88F5082
> +        88F5181
> +        88F5181L
> +        88F5182
> +        88F5281
> +        88F6183
> +  Core: ARMv5 compatible
> +  Linux kernel directory: arch/arm/mach-orion5x
> +  No public datasheets available.

There is a MV88F5182-opensource-manual.pdf document. It
can be downloaded from:

www.embeddedarm.com/.../MV88F5182-opensource-manual.pdf

	Andrew
Arnd Bergmann July 17, 2012, 3:09 p.m. UTC | #2
On Tuesday 17 July 2012, Thomas Petazzoni wrote:
> As stated in the introduction of the document, the families of ARM
> SoCs at Marvell are very complicated, and it is difficult for
> newcomers to understand the organization of this SoC family and how it
> relates to the Linux kernel support for those hardware platforms.
> 
> This document is only at RFC stage for now, it requires reviews and
> comments from the Marvell maintainers, the PXA maintainers and the MMP
> maintainers. For correctness of course, but also to add any other
> information that would be useful. For example, one of the thing that
> wasn't clear how to detail in the documentation is how the SoCs relate
> to each other in terms of hardware IP blocks. For example, most of the
> Kirkwood/Dove/Armada 370-XP/etc. hardware IPs (I2C, SPI, USB, SATA,
> etc.) are identical, while the PXA and MMP families are completely
> separate.

This is wonderful! Even if there are some pieces missing or incorrect,
it looks extremely valuable. I remember countless times of browsing
through the marvell web site and the source code trying to make sense
of how things fit together.

Thanks a lot for compiling the list!

> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: Jason Cooper <jason@lakedaemon.net>
> Cc: Gregory Clement <gregory.clement@free-electrons.com>
> Cc: Eric Miao <eric.y.miao@gmail.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
> Cc: Nicolas Pitre <nico@fluxnic.net>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Olof Johansson <olof@lixom.net>

Acked-by: Arnd Bergmann <arnd@arndb.de>


> +Orion family
> +------------
> +
> +  Flavors:
> +        88F5082
> +        88F5181
> +        88F5181L
> +        88F5182
> +        88F5281
> +        88F6183
> +  Core: ARMv5 compatible
> +  Linux kernel directory: arch/arm/mach-orion5x
> +  No public datasheets available.

I would also mention that the core in this is "Feroceon", not just that it's ARMv5.
Same for mv78xx0 and kirkwood.

> +        PXA930, PXA935, PXA955
> +             Core: ARMv5 compatible Sheeva core

This looks wrong. According to the Kconfig file, PXA93x actually uses the
same core as PXA3xx, while PXA955 uses an ARMv7 PJ4 core.

> +MMP/MMP2 family (communication processor)
> +-----------------------------------------
> +             Core: ARMv5 compatible Marvell PJ1 (Mohawk)
> +        MMP2, a.k.a Armada 610
> +             Product Brief        : http://www.marvell.com/application-processors/armada-600/assets/armada610_pb.pdf
> +             Core: ARMv7 compatible Sheeva PJ4 core
> +   Linux kernel directory: arch/arm/mach-mmp

I'd also like to bring up the question of merging the pxa and mmp
directories again. It would simplify the task of building a multiplatform
kernel significantly as they have shared device drivers with some duplicate
header files (e.g. dma, gpio, ...).

	Arnd
Thomas Petazzoni July 17, 2012, 3:37 p.m. UTC | #3
Le Tue, 17 Jul 2012 16:59:01 +0200,
Andrew Lunn <andrew@lunn.ch> a écrit :

> There is a MV88F5182-opensource-manual.pdf document. It
> can be downloaded from:
> 
> www.embeddedarm.com/.../MV88F5182-opensource-manual.pdf

Thanks, added.

Thomas
Thomas Petazzoni July 17, 2012, 3:40 p.m. UTC | #4
Le Tue, 17 Jul 2012 15:09:29 +0000,
Arnd Bergmann <arnd@arndb.de> a écrit :

> > This document is only at RFC stage for now, it requires reviews and
> > comments from the Marvell maintainers, the PXA maintainers and the
> > MMP maintainers. For correctness of course, but also to add any
> > other information that would be useful. For example, one of the
> > thing that wasn't clear how to detail in the documentation is how
> > the SoCs relate to each other in terms of hardware IP blocks. For
> > example, most of the Kirkwood/Dove/Armada 370-XP/etc. hardware IPs
> > (I2C, SPI, USB, SATA, etc.) are identical, while the PXA and MMP
> > families are completely separate.
> 
> This is wonderful! Even if there are some pieces missing or incorrect,
> it looks extremely valuable. I remember countless times of browsing
> through the marvell web site and the source code trying to make sense
> of how things fit together.
> 
> Thanks a lot for compiling the list!

You're welcome. Marvell engineers did the initial work, I added the
datasheet links, plus the PXA/MMP families.

> I would also mention that the core in this is "Feroceon", not just
> that it's ARMv5. Same for mv78xx0 and kirkwood.

Added.

> > +        PXA930, PXA935, PXA955
> > +             Core: ARMv5 compatible Sheeva core
> 
> This looks wrong. According to the Kconfig file, PXA93x actually uses
> the same core as PXA3xx, while PXA955 uses an ARMv7 PJ4 core.

Right. I shouldn't believe Wikipedia, it seems. According to
http://en.wikipedia.org/wiki/XScale#PXA930.2F935 :

""The PXA930 and PXA935 processor series were built using an
architecture developed by Marvell,[7] instead of using an Xscale or ARM
design. This design, called the Sheeva core,[8] is ARM-compliant.""

> > +MMP/MMP2 family (communication processor)
> > +-----------------------------------------
> > +             Core: ARMv5 compatible Marvell PJ1 (Mohawk)
> > +        MMP2, a.k.a Armada 610
> > +             Product Brief        :
> > http://www.marvell.com/application-processors/armada-600/assets/armada610_pb.pdf
> > +             Core: ARMv7 compatible Sheeva PJ4 core
> > +   Linux kernel directory: arch/arm/mach-mmp
> 
> I'd also like to bring up the question of merging the pxa and mmp
> directories again. It would simplify the task of building a
> multiplatform kernel significantly as they have shared device drivers
> with some duplicate header files (e.g. dma, gpio, ...).

I obviously can't comment on this.

It would however be really nice to have comments on the document from
the PXA/MMP people, because for now it has just been written based on
some quick reading of Kconfig files and random stuff on the web.

Also, any clues on how to make it clearly appear that the
Dove/Discovery/Kirkwood/Armada-370-XP families are completely separate
from the PXA/MMP/MMP2 families? I was thinking, for each family, to
list the device drivers that are actually being used for the different
IPs of the SoCs, but I don't know if it is actually useful or not.

Best regards,

Thomas
Nicolas Pitre July 17, 2012, 3:45 p.m. UTC | #5
On Tue, 17 Jul 2012, Arnd Bergmann wrote:

> On Tuesday 17 July 2012, Thomas Petazzoni wrote:
> > As stated in the introduction of the document, the families of ARM
> > SoCs at Marvell are very complicated, and it is difficult for
> > newcomers to understand the organization of this SoC family and how it
> > relates to the Linux kernel support for those hardware platforms.
> > 
> > This document is only at RFC stage for now, it requires reviews and
> > comments from the Marvell maintainers, the PXA maintainers and the MMP
> > maintainers. For correctness of course, but also to add any other
> > information that would be useful. For example, one of the thing that
> > wasn't clear how to detail in the documentation is how the SoCs relate
> > to each other in terms of hardware IP blocks. For example, most of the
> > Kirkwood/Dove/Armada 370-XP/etc. hardware IPs (I2C, SPI, USB, SATA,
> > etc.) are identical, while the PXA and MMP families are completely
> > separate.
> 
> This is wonderful! Even if there are some pieces missing or incorrect,
> it looks extremely valuable. I remember countless times of browsing
> through the marvell web site and the source code trying to make sense
> of how things fit together.
> 
> Thanks a lot for compiling the list!

Absolutely!

I think I have an old list that was compiled by Lennert.  I'll try to 
dig it out in case this document could benefit from it.

> > +Orion family
> > +------------
> > +
> > +  Flavors:
> > +        88F5082
> > +        88F5181
> > +        88F5181L
> > +        88F5182
> > +        88F5281
> > +        88F6183
> > +  Core: ARMv5 compatible
> > +  Linux kernel directory: arch/arm/mach-orion5x
> > +  No public datasheets available.
> 
> I would also mention that the core in this is "Feroceon", not just that it's ARMv5.
> Same for mv78xx0 and kirkwood.

They're not all Feroceons.  Some of the core names were: Mohawk, 
Jolteon, Flareon, and even Orion might have been a core name initially.  
Possibly others I can't remember now.

> > +        PXA930, PXA935, PXA955
> > +             Core: ARMv5 compatible Sheeva core
> 
> This looks wrong. According to the Kconfig file, PXA93x actually uses the
> same core as PXA3xx, while PXA955 uses an ARMv7 PJ4 core.

Oh, and BTW Flareon is also a PJ4.


Nicolas
Andrew Lunn July 17, 2012, 4:52 p.m. UTC | #6
> It would however be really nice to have comments on the document from
> the PXA/MMP people, because for now it has just been written based on
> some quick reading of Kconfig files and random stuff on the web.
> 
> Also, any clues on how to make it clearly appear that the
> Dove/Discovery/Kirkwood/Armada-370-XP families are completely separate
> from the PXA/MMP/MMP2 families? I was thinking, for each family, to
> list the device drivers that are actually being used for the different
> IPs of the SoCs, but I don't know if it is actually useful or not.

I think it would be useful. Adding DT and clk framework support i
always wounder which platforms i've just broken. It would also be good
to not limit it just to drivers shared within ARM. It seems like the
I2C driver is also shared with a few PPC devices. The Ethernet driver
is also used by PPC. Similar for the SATA i think, plus i think it can
also be used on PCI cards!

     Andrew
Eric Miao July 17, 2012, 6:01 p.m. UTC | #7
> +PXA 2xx/3xx/93x/95 family (application processor)
> +-------------------------------------------------
> +  Flavors:
> +        PXA270, PXA271, PXA272
> +             Product Brief         : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_pb.pdf
> +             Design guide          : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_design_guide.pdf
> +             Developers manual     : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_dev_man.pdf
> +             Specification         : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_emts.pdf
> +             Specification update  : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_spec_update.pdf
> +             Core: ARMv5 XScale core
> +        PXA300, PXA310, PXA320
> +             PXA 300 Product Brief : http://www.marvell.com/application-processors/pxa-family/assets/PXA300_PB_R4.pdf
> +             PXA 310 Product Brief : http://www.marvell.com/application-processors/pxa-family/assets/PXA310_PB_R4.pdf
> +             PXA 320 Product Brief : http://www.marvell.com/application-processors/pxa-family/assets/PXA320_PB_R4.pdf
> +             Design guide          : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_Design_Guide.pdf
> +             Developers manual     : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_Developers_Manual.zip
> +             Specifications        : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_EMTS.pdf
> +             Specification Update  : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_Spec_Update.zip
> +             Reference Manual      : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_TavorP_BootROM_Ref_Manual.pdf
> +             Core: ARMv5 XScale core
> +        PXA930, PXA935, PXA955
> +             Core: ARMv5 compatible Sheeva core
> +   Comment: bought by Marvell from Intel in ~2006. Completely
> +   different IPs than the previously listed Marvell SoCs.
> +   Linux kernel directory: arch/arm/mach-pxa
> +
> +MMP/MMP2 family (communication processor)
> +-----------------------------------------
> +
> +   Flavors:
> +        PXA168, a.k.a Armada 168
> +             Homepage             : http://www.marvell.com/application-processors/armada-100/armada-168.jsp
> +             Product brief        : http://www.marvell.com/application-processors/armada-100/assets/pxa_168_pb.pdf
> +             Hardware manual      : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_datasheet.pdf
> +             Software manual      : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_software_manual.pdf
> +             Specification update : http://www.marvell.com/application-processors/armada-100/assets/ARMADA16x_Spec_update.pdf
> +             Boot ROM manual      : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_ref_manual.pdf
> +             App node package     : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_app_note_package.pdf
> +             Core: ARMv5 compatible Marvell PJ1 (Mohawk)
> +        PXA910
> +             Homepage             : http://www.marvell.com/communication-processors/pxa910/
> +             Product Brief        : http://www.marvell.com/communication-processors/pxa910/assets/Marvell_PXA910_Platform-001_PB_final.pdf
> +             Core: ARMv5 compatible Marvell PJ1 (Mohawk)
> +        MMP2, a.k.a Armada 610
> +             Product Brief        : http://www.marvell.com/application-processors/armada-600/assets/armada610_pb.pdf
> +             Core: ARMv7 compatible Sheeva PJ4 core
> +   Linux kernel directory: arch/arm/mach-mmp

This is so useful to Marvell processor new comers, thanks everyone to
compile this.

The PXA side might need a bit modification though, so for historical reason
there is PXA series as originated back from Intel. So there are really those
legacy ones:

  PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x

The new ones developed after Marvell acquired Intel's XScale biz are:

  PXA95x/PXA168/PXA910/MMP2

And among these, they are actually categorized into two flavors:

  AP with CP: PXA93x/PXA95X/PXA910
  AP only without CP: the rest of them

And the ARM cores used are also a bit different:

  XScale (Intel's ARMv5te compatible): PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x
  Marvell's PJ1 (Marvell's ARMv5te compatible): PXA168/PXA910
  Marvell's PJ4 (Marvell's ARMv7 compatible): PXA95x/MMP2

So these are really a bit complicated, by the end of the day, we would still
go the way as Arnd suggested, that to collapse PXA and MMP series into one,
so that will be simpler and easier to understand.

Considering the complications here, I would suggest to simply have a single
processor line as: PXA/MMP processor line, and list all the processor flavors
under, whether it's an AP or a AP+CP could be individually indicated.

> +
> +Credits
> +-------
> +
> + Maen Suleiman <maen@marvell.com>
> + Lior Amsalem <alior@marvell.com>
> + Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> --
> 1.7.9.5
>
Andrew Lunn July 17, 2012, 6:05 p.m. UTC | #8
> And among these, they are actually categorized into two flavors:
> 
>   AP with CP: PXA93x/PXA95X/PXA910
>   AP only without CP: the rest of them

Sorry for being dumb, but what does CP meaning?

      Thanks
Eric Miao July 17, 2012, 6:08 p.m. UTC | #9
On Wed, Jul 18, 2012 at 2:05 AM, Andrew Lunn <andrew@lunn.ch> wrote:
>> And among these, they are actually categorized into two flavors:
>>
>>   AP with CP: PXA93x/PXA95X/PXA910
>>   AP only without CP: the rest of them
>
> Sorry for being dumb, but what does CP meaning?

Communication Processor, sometimes called modem, basically the processor
doing all the signal processing/protocol work for GSM, CDMA, 3G, LTE etc.

Sorry for the abbrev.
Thomas Petazzoni July 17, 2012, 6:35 p.m. UTC | #10
Le Wed, 18 Jul 2012 02:01:51 +0800,
Eric Miao <eric.y.miao@gmail.com> a écrit :

> This is so useful to Marvell processor new comers, thanks everyone to
> compile this.

You're welcome. Glad to see that this is seen as a useful thing.

> The PXA side might need a bit modification though, so for historical reason
> there is PXA series as originated back from Intel. So there are really those
> legacy ones:
> 
>   PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x
> 
> The new ones developed after Marvell acquired Intel's XScale biz are:
> 
>   PXA95x/PXA168/PXA910/MMP2
> 
> And among these, they are actually categorized into two flavors:
> 
>   AP with CP: PXA93x/PXA95X/PXA910
>   AP only without CP: the rest of them
> 
> And the ARM cores used are also a bit different:
> 
>   XScale (Intel's ARMv5te compatible): PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x
>   Marvell's PJ1 (Marvell's ARMv5te compatible): PXA168/PXA910
>   Marvell's PJ4 (Marvell's ARMv7 compatible): PXA95x/MMP2
> 
> So these are really a bit complicated, by the end of the day, we would still
> go the way as Arnd suggested, that to collapse PXA and MMP series into one,
> so that will be simpler and easier to understand.
> 
> Considering the complications here, I would suggest to simply have a single
> processor line as: PXA/MMP processor line, and list all the processor flavors
> under, whether it's an AP or a AP+CP could be individually indicated.

Ok, thanks, I'll try to take this into account in the next spin.
However, I'm not sure about putting them into a single family, because
what I tried to do until now is to map mach-* directories to the
families, even if down the road there is a wish to merge some of them.

Maybe you could share some insights on why in the first place mach-pxa
and mach-mmp were both created? I guess at some point in time there was
a vision that there were two SoC families with enough differences so
that it required two mach-* directories. I'd like to document this if
possible.

Also, do you have more public datasheet links available for those SoCs?
I think I've gathered all the ones I could find on the Marvell website,
but there are a lot of missing datasheets.

Thanks,

Thomas
Eric Miao July 17, 2012, 6:50 p.m. UTC | #11
On Wed, Jul 18, 2012 at 2:35 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Le Wed, 18 Jul 2012 02:01:51 +0800,
> Eric Miao <eric.y.miao@gmail.com> a écrit :
>
>> This is so useful to Marvell processor new comers, thanks everyone to
>> compile this.
>
> You're welcome. Glad to see that this is seen as a useful thing.
>
>> The PXA side might need a bit modification though, so for historical reason
>> there is PXA series as originated back from Intel. So there are really those
>> legacy ones:
>>
>>   PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x
>>
>> The new ones developed after Marvell acquired Intel's XScale biz are:
>>
>>   PXA95x/PXA168/PXA910/MMP2
>>
>> And among these, they are actually categorized into two flavors:
>>
>>   AP with CP: PXA93x/PXA95X/PXA910
>>   AP only without CP: the rest of them
>>
>> And the ARM cores used are also a bit different:
>>
>>   XScale (Intel's ARMv5te compatible): PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x
>>   Marvell's PJ1 (Marvell's ARMv5te compatible): PXA168/PXA910
>>   Marvell's PJ4 (Marvell's ARMv7 compatible): PXA95x/MMP2
>>
>> So these are really a bit complicated, by the end of the day, we would still
>> go the way as Arnd suggested, that to collapse PXA and MMP series into one,
>> so that will be simpler and easier to understand.
>>
>> Considering the complications here, I would suggest to simply have a single
>> processor line as: PXA/MMP processor line, and list all the processor flavors
>> under, whether it's an AP or a AP+CP could be individually indicated.
>
> Ok, thanks, I'll try to take this into account in the next spin.
> However, I'm not sure about putting them into a single family, because
> what I tried to do until now is to map mach-* directories to the
> families, even if down the road there is a wish to merge some of them.
>
> Maybe you could share some insights on why in the first place mach-pxa
> and mach-mmp were both created? I guess at some point in time there was
> a vision that there were two SoC families with enough differences so
> that it required two mach-* directories. I'd like to document this if
> possible.

That was long ago, and many infrastructures we have today were not ready
at that time, that's why mach-mmp/ was created as a new directory at the
first place. If the first attempt was more recent, that would not happen.

>
> Also, do you have more public datasheet links available for those SoCs?
> I think I've gathered all the ones I could find on the Marvell website,
> but there are a lot of missing datasheets.

Unfortunately, no, esp. for the AP+CP variants, you have probably collected
more of the public things than I did. Things have been much better actually
since we were acquired, think it will be better but for now, many of them
are still under NDA.

>
> Thanks,
>
> Thomas
> --
> Thomas Petazzoni, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com
Nicolas Pitre July 17, 2012, 6:58 p.m. UTC | #12
On Tue, 17 Jul 2012, Nicolas Pitre wrote:

> On Tue, 17 Jul 2012, Arnd Bergmann wrote:
> 
> > On Tuesday 17 July 2012, Thomas Petazzoni wrote:
> > > As stated in the introduction of the document, the families of ARM
> > > SoCs at Marvell are very complicated, and it is difficult for
> > > newcomers to understand the organization of this SoC family and how it
> > > relates to the Linux kernel support for those hardware platforms.
> > > 
> > > This document is only at RFC stage for now, it requires reviews and
> > > comments from the Marvell maintainers, the PXA maintainers and the MMP
> > > maintainers. For correctness of course, but also to add any other
> > > information that would be useful. For example, one of the thing that
> > > wasn't clear how to detail in the documentation is how the SoCs relate
> > > to each other in terms of hardware IP blocks. For example, most of the
> > > Kirkwood/Dove/Armada 370-XP/etc. hardware IPs (I2C, SPI, USB, SATA,
> > > etc.) are identical, while the PXA and MMP families are completely
> > > separate.
> > 
> > This is wonderful! Even if there are some pieces missing or incorrect,
> > it looks extremely valuable. I remember countless times of browsing
> > through the marvell web site and the source code trying to make sense
> > of how things fit together.
> > 
> > Thanks a lot for compiling the list!
> 
> Absolutely!
> 
> I think I have an old list that was compiled by Lennert.  I'll try to 
> dig it out in case this document could benefit from it.

Here's what I've dug out. This is dated October 2007.

----- >8

family			out of order			in order
==============================================================================
no mmu		|				|			     |
no cache	|	Falcon			|	Falcon D	     |
"966"		|				|	a.k.a. Dragonite     |
==============================================================================
no mmu		|				|			     |
cache		|	Osprey			|	Osprey D	     |
"946"		|				|			     |
==============================================================================
		|	single issue: Mohawk	|			     |
mmu		|	a.k.a. Feroceon 1850	|			     |
cache		|	a.k.a. Feroceon FR-331	|	single issue:	     |
"926"		|				|	Mohawk D	     |
		|	dual issue: Jolteon	|			     |
		|	a.k.a. Feroceon 2850	|			     |
==============================================================================

Variants:
- Falcon DMC - Multi-Core version of the Falcon D
- Falcon DMT - Multi-Thread version of the Falcon D
- Osprey DMT - Multi-Thread version of Osprey D

There is also the Flareon, which is what will be used in Dove:
- Based on the Jolteon
- v6/v7 support
- packaged with L2, VFP, AXI

All of these cores can be mixed-and-matched with L2, VFP, AXI, wMMXt,
etc.
Thomas Petazzoni Aug. 4, 2012, 8:59 p.m. UTC | #13
Hello Eric,

Thanks for all those details! Some comments below.

Le Wed, 18 Jul 2012 02:01:51 +0800,
Eric Miao <eric.y.miao@gmail.com> a écrit :

> This is so useful to Marvell processor new comers, thanks everyone to
> compile this.
> 
> The PXA side might need a bit modification though, so for historical
> reason there is PXA series as originated back from Intel. So there
> are really those legacy ones:
> 
>   PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x
> 
> The new ones developed after Marvell acquired Intel's XScale biz are:
> 
>   PXA95x/PXA168/PXA910/MMP2
> 
> And among these, they are actually categorized into two flavors:
> 
>   AP with CP: PXA93x/PXA95X/PXA910
>   AP only without CP: the rest of them
> 
> And the ARM cores used are also a bit different:
> 
>   XScale (Intel's ARMv5te compatible):
> PXA21x/PXA25x/PXA27x/PXA3xx/PXA93x Marvell's PJ1 (Marvell's ARMv5te
> compatible): PXA168/PXA910 Marvell's PJ4 (Marvell's ARMv7
> compatible): PXA95x/MMP2

Great, I included all those informations in some form. Will be part of
v3.

> So these are really a bit complicated, by the end of the day, we
> would still go the way as Arnd suggested, that to collapse PXA and
> MMP series into one, so that will be simpler and easier to understand.
> 
> Considering the complications here, I would suggest to simply have a
> single processor line as: PXA/MMP processor line, and list all the
> processor flavors under, whether it's an AP or a AP+CP could be
> individually indicated.

For now, I prefer to keep those as two separate families, so that it
reflects the *current* state of the Linux mach-* directories. The
current state may not be perfect, but it's the current state, so let's
reflect it for now.

Thanks again for your comments!

Thomas
Thomas Petazzoni Aug. 4, 2012, 9:01 p.m. UTC | #14
Hello Nicolas,

Le Tue, 17 Jul 2012 14:58:12 -0400 (EDT),
Nicolas Pitre <nico@fluxnic.net> a écrit :

> > I think I have an old list that was compiled by Lennert.  I'll try to 
> > dig it out in case this document could benefit from it.
> 
> Here's what I've dug out. This is dated October 2007.
> 
> ----- >8
> 
> family			out of order			in order
> ==============================================================================
> no mmu		|				|			     |
> no cache	|	Falcon			|	Falcon D	     |
> "966"		|				|	a.k.a. Dragonite     |
> ==============================================================================
> no mmu		|				|			     |
> cache		|	Osprey			|	Osprey D	     |
> "946"		|				|			     |
> ==============================================================================
> 		|	single issue: Mohawk	|			     |
> mmu		|	a.k.a. Feroceon 1850	|			     |
> cache		|	a.k.a. Feroceon FR-331	|	single issue:	     |
> "926"		|				|	Mohawk D	     |
> 		|	dual issue: Jolteon	|			     |
> 		|	a.k.a. Feroceon 2850	|			     |
> ==============================================================================
> 
> Variants:
> - Falcon DMC - Multi-Core version of the Falcon D
> - Falcon DMT - Multi-Thread version of the Falcon D
> - Osprey DMT - Multi-Thread version of Osprey D
> 
> There is also the Flareon, which is what will be used in Dove:
> - Based on the Jolteon
> - v6/v7 support
> - packaged with L2, VFP, AXI
> 
> All of these cores can be mixed-and-matched with L2, VFP, AXI, wMMXt,
> etc.

Thanks for those details. However, I'm not really able to match those
details against the Marvell SoCs themselves. Could you detail which ARM
core corresponds to which Marvell SoC family, or specific model?

Thanks!

Thomas
diff mbox

Patch

diff --git a/Documentation/arm/Marvell/README b/Documentation/arm/Marvell/README
new file mode 100644
index 0000000..4f33433
--- /dev/null
+++ b/Documentation/arm/Marvell/README
@@ -0,0 +1,168 @@ 
+ARM Marvell SoCs
+================
+
+This document lists all the ARM Marvell SoCs that are currently
+supported in mainline by the Linux kernel. As the Marvell families of
+SoCs are large and complex, it is hard to understand where the support
+for a particular SoC is available in the Linux kernel. This document
+tries to help in understanding where those SoCs are supported, and to
+match them with their corresponding public datasheet, when available.
+
+Orion family
+------------
+
+  Flavors:
+        88F5082
+        88F5181
+        88F5181L
+        88F5182
+        88F5281
+        88F6183
+  Core: ARMv5 compatible
+  Linux kernel directory: arch/arm/mach-orion5x
+  No public datasheets available.
+
+Kirkwood family
+---------------
+
+  Flavors:
+        88F6282 a.k.a Armada 300
+                Product Brief  : http://www.marvell.com/embedded-processors/armada-300/assets/armada_310.pdf
+        88F6283 a.k.a Armada 310
+                Product Brief  : http://www.marvell.com/embedded-processors/armada-300/assets/armada_310.pdf
+        88F6190
+                Product Brief  : http://www.marvell.com/embedded-processors/kirkwood/assets/88F6190-003_WEB.pdf
+                Hardware Spec  : http://www.marvell.com/embedded-processors/kirkwood/assets/HW_88F619x_OpenSource.pdf
+                Functional Spec: http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf
+        88F6192
+                Product Brief  : http://www.marvell.com/embedded-processors/kirkwood/assets/88F6192-003_ver1.pdf
+                Hardware Spec  : http://www.marvell.com/embedded-processors/kirkwood/assets/HW_88F619x_OpenSource.pdf
+                Functional Spec: http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf
+        88F6182
+        88F6180
+                Product Brief  : http://www.marvell.com/embedded-processors/kirkwood/assets/88F6180-003_ver1.pdf
+                Hardware Spec  : http://www.marvell.com/embedded-processors/kirkwood/assets/HW_88F6180_OpenSource.pdf
+                Functional Spec: http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf
+        88F6281
+                Product Brief  : http://www.marvell.com/embedded-processors/kirkwood/assets/88F6281-004_ver1.pdf
+                Hardware Spec  : http://www.marvell.com/embedded-processors/kirkwood/assets/HW_88F6281_OpenSource.pdf
+                Functional Spec: http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf
+  Homepage: http://www.marvell.com/embedded-processors/kirkwood/
+  Core: ARMv5 compatible
+  Linux kernel directory: arch/arm/mach-kirkwood
+
+Discovery family
+----------------
+
+  Flavors:
+        MV78100
+                Product Brief  : http://www.marvell.com/embedded-processors/discovery-innovation/assets/MV78100-003_WEB.pdf
+                Hardware Spec  : http://www.marvell.com/embedded-processors/discovery-innovation/assets/HW_MV78100_OpenSource.pdf
+                Functional Spec: http://www.marvell.com/embedded-processors/discovery-innovation/assets/FS_MV76100_78100_78200_OpenSource.pdf
+        MV78200
+                Product Brief  : http://www.marvell.com/embedded-processors/discovery-innovation/assets/MV78200-002_WEB.pdf
+                Hardware Spec  : http://www.marvell.com/embedded-processors/discovery-innovation/assets/HW_MV78200_OpenSource.pdf
+                Functional Spec: http://www.marvell.com/embedded-processors/discovery-innovation/assets/FS_MV76100_78100_78200_OpenSource.pdf
+        MV76100
+                Not supported by the Linux kernel.
+  Core: ARMv5 compatible
+  Linux kernel directory: arch/arm/mach-mv78xx0
+
+EBU Armada family
+-----------------
+
+  Armada 370 Flavors:
+        88F6710
+        88F6707
+        88F6W11
+
+  Armada XP Flavors:
+        MV78230
+        MV78260
+        MV78460
+  Product Brief: http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf
+  Core: ARMv7 compatible
+
+  Linux kernel directory: arch/arm/mach-mvebu
+  No public datasheet available.
+
+Avanta family
+-------------
+
+  Flavors:
+       88F6510
+       88F6530P
+       88F6550
+       88F6560
+  Homepage     : http://www.marvell.com/broadband/
+  Product Brief: http://www.marvell.com/broadband/assets/Marvell_Avanta_88F6510_305_060-001_product_brief.pdf
+  Core: ARMv5 compatible
+  Linux kernel directory: no code in mainline yet, planned for the future
+  No public datasheet available.
+
+Dove family (application processor)
+-----------------------------------
+
+  Flavors:
+        88AP510 a.k.a Armada 510
+                Product Brief   : http://www.marvell.com/application-processors/armada-500/assets/Marvell_Armada510_SoC.pdf
+                Hardware Spec   : http://www.marvell.com/application-processors/armada-500/assets/Armada-510-Hardware-Spec.pdf
+                Functional Spec : http://www.marvell.com/application-processors/armada-500/assets/Armada-510-Functional-Spec.pdf
+  Homepage: http://www.marvell.com/application-processors/armada-500/
+  Core: ARMv7 compatible
+  Directory: arch/arm/mach-dove
+
+PXA 2xx/3xx/93x/95 family (application processor)
+-------------------------------------------------
+  Flavors:
+        PXA270, PXA271, PXA272
+             Product Brief         : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_pb.pdf
+             Design guide          : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_design_guide.pdf
+             Developers manual     : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_dev_man.pdf
+             Specification         : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_emts.pdf
+             Specification update  : http://www.marvell.com/application-processors/pxa-family/assets/pxa_27x_spec_update.pdf
+             Core: ARMv5 XScale core
+        PXA300, PXA310, PXA320
+             PXA 300 Product Brief : http://www.marvell.com/application-processors/pxa-family/assets/PXA300_PB_R4.pdf
+             PXA 310 Product Brief : http://www.marvell.com/application-processors/pxa-family/assets/PXA310_PB_R4.pdf
+             PXA 320 Product Brief : http://www.marvell.com/application-processors/pxa-family/assets/PXA320_PB_R4.pdf
+             Design guide          : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_Design_Guide.pdf
+             Developers manual     : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_Developers_Manual.zip
+             Specifications        : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_EMTS.pdf
+             Specification Update  : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_Spec_Update.zip
+             Reference Manual      : http://www.marvell.com/application-processors/pxa-family/assets/PXA3xx_TavorP_BootROM_Ref_Manual.pdf
+             Core: ARMv5 XScale core
+        PXA930, PXA935, PXA955
+             Core: ARMv5 compatible Sheeva core
+   Comment: bought by Marvell from Intel in ~2006. Completely
+   different IPs than the previously listed Marvell SoCs.
+   Linux kernel directory: arch/arm/mach-pxa
+
+MMP/MMP2 family (communication processor)
+-----------------------------------------
+
+   Flavors:
+        PXA168, a.k.a Armada 168
+             Homepage             : http://www.marvell.com/application-processors/armada-100/armada-168.jsp
+             Product brief        : http://www.marvell.com/application-processors/armada-100/assets/pxa_168_pb.pdf
+             Hardware manual      : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_datasheet.pdf
+             Software manual      : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_software_manual.pdf
+             Specification update : http://www.marvell.com/application-processors/armada-100/assets/ARMADA16x_Spec_update.pdf
+             Boot ROM manual      : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_ref_manual.pdf
+             App node package     : http://www.marvell.com/application-processors/armada-100/assets/armada_16x_app_note_package.pdf
+             Core: ARMv5 compatible Marvell PJ1 (Mohawk)
+        PXA910
+             Homepage             : http://www.marvell.com/communication-processors/pxa910/
+             Product Brief        : http://www.marvell.com/communication-processors/pxa910/assets/Marvell_PXA910_Platform-001_PB_final.pdf
+             Core: ARMv5 compatible Marvell PJ1 (Mohawk)
+        MMP2, a.k.a Armada 610
+             Product Brief        : http://www.marvell.com/application-processors/armada-600/assets/armada610_pb.pdf
+             Core: ARMv7 compatible Sheeva PJ4 core
+   Linux kernel directory: arch/arm/mach-mmp
+
+Credits
+-------
+
+ Maen Suleiman <maen@marvell.com>
+ Lior Amsalem <alior@marvell.com>
+ Thomas Petazzoni <thomas.petazzoni@free-electrons.com>