
Do we really need the "freescale" subdirectory here? Maybe cpu/arm_imx would be a shorter and more descriptive name?
...
I think it is a matter of taste.
Agreed.
Some people would like to have consistency making it easy to find where things are located.
To me making it easy to find where things are located includes not to add unnecessary directory levels.
When adding "cpu/freescale/" I see no clear line what should go in there and what not. Whould we then move all the cpu/mpc???/ directories into cpu/freescale/ ? And then probably create (for consistency) a "cpu/amcc/" directory and mode cpu/ppc4xx into that one? What do we get in addition to another directory level? IMO that would not improve anything, and you still don't see where shared code is located.
I think you can still keep the cpu/ppc4xx directory but if you find that cpu/ppcYYY has shared code with the cpu/ppc4xx and you would like to have a common driver, then you put it in "cpu/amcc/ppc.
For freescale you would put shared code in cpu/freescale/imx and cpu/freescale/ppc and maybe cpu/freescale/coldfire
If you look at what is driving duplication, then you find that the peripherals are either developed inside a semiconductor company, or they are licensed from an IP provider.
It makes a lot of sense therefore to dedicate directories to the providers of IP: ARM is a provider, but so are also Freescale, Atmel and others.
Well, where did license Freescale the IMX core from? I don't think that we should focus on vendor names here, but instead on content. And the content is "ARM IMX" related code. Assuming that is CPU specific enough to go under "cpu/", I feel we should either add a "cpu/imx" directory or - a little more descriptive - "cpu/arm_imx/" as suggested above. Even "cpu/arm/imx/" seems more natural to me than "cpu/freescale/imx/".
I might be wrong, but think the issue is that Freescale has some common peripherals which are used both on ARM926EJS and ARM920T chips.
If the peripherals are licensed from ARM, then I think that the peripheral might be in use in other ARM chipa I.E. non-imx chips as well and "cpu/arm" would be OK, but not "cpu/arm/imx" . If the peripherals are developed by Freescale, then if they happen to use the peripheral on a non-ARM chip then the cpu/arm/imx is no good and cpu/arm_imx is also no good. "cpu/freescale" is then much better for generic stuff and "cpu/freescale/imx" for things shared only among imx chips. .
cpu/arm could be a directory, but then it is
Best regards,
Wolfgang Denk
Best Regards Ulf Samuelsson ulf@atmel.com Atmel Nordic AB Mail: Box 2033, 174 02 Sundbyberg, Sweden Visit: Kavallerivägen 24, 174 58 Sundbyberg, Sweden Phone +46 (8) 441 54 22 Fax +46 (8) 441 54 29 GSM +46 (706) 22 44 57
Technical support when I am not available: AT89 C51 Applications Group: mailto:micro.hotline@nto.atmel.com AT90 AVR Applications Group: mailto:avr@atmel.com AT91 ARM Applications Group: mailto:at91support@atmel.com FPSLIC Application Group: mailto:fpslic@atmel.com Best AVR link: www.avrfreaks.net