
On 05/10/2012 22:03, Eric Nelson wrote:
On 10/05/2012 12:00 PM, Tom Rini wrote:
On Fri, Oct 05, 2012 at 11:42:19AM -0700, Eric Nelson wrote:
On 10/05/2012 10:24 AM, Albert ARIBAUD wrote:
Hi Eric,
On Thu, 4 Oct 2012 12:49:07 -0700, Eric Nelson eric.nelson@boundarydevices.com wrote:
Signed-off-by: Eric Nelsoneric.nelson@boundarydevices.com
board/boundary/nitrogen6x/Makefile | 41 ++ board/boundary/nitrogen6x/README | 77 +++ board/boundary/nitrogen6x/nitrogen6x.c | 840 ++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/nitrogen6x.h | 242 +++++++++ 5 files changed, 1201 insertions(+), 0 deletions(-) create mode 100644 board/boundary/nitrogen6x/Makefile create mode 100644 board/boundary/nitrogen6x/README create mode 100644 board/boundary/nitrogen6x/nitrogen6x.c create mode 100644 include/configs/nitrogen6x.h
If this is essentially a copy of sabrelite, I am surprised that git does not report any copies. Did you use -C with git format-patch ?
Hi Albert,
I didn't use '-C' (didn't know about it: thanks for the tip!).
It wouldn't have detected copies though, because I made slight changes in each of these files, replacing the board names and file names in board/boundary/ and altering the default environment (policy bits) in nitrogen6x.h.
And we can't deal with this by factoring the code differently?
Hi Tom,
There are two bits to this question: - Can we represent the policy differences outside of a board structure? These differences are all inside of include/configs/nitrogen6x.
What we have already done is to set a common config header that is included by both include/configs/nitrogen6x and include/configs/sabrelite. See for example mx6qsabre_common.h, with the boards mx6qsabresd and mx6qsabreauto.
- Can we represent the board differences without a board structure? This is a bit harder, since the boards are slightly different. The Nitrogen6X has a different ethernet PHY reset pin and an optional SDIO Wi-Fi module.
Ona major point is *how* you want to represent your board into U-boot, even if it is derived from a Freescale's evaluation board. In many case a vendor directory is desired (freescale vs boundary).
We could add code to SABRE Lite to accommodate these, but it seems that sets a bad precedent. Would this be done for every vendor that bases a design on SABRE Lite?
I am afraid that it is easy to reach the case when changes for a vendor will break other boards, and getting all in sync can be problematic.
The precise diffs for the configs and sources is attached for reference.
I've also been pondering how to simply re-use the code within the board setup file (mx6qsabrelite.c), but I haven't figured anything out. Clearly a lot of the code is duplicated, but at the same time it's board-specific.
For example, we could create a common module that sets up the SD card pads "like SABRE Lite", and a similar one to configure ethernet pads. Since SABRE Lite is a reference design, perhaps that makes sense.
I think that another example in u-boot doing this is for davinci (8xx) boards, At least three boards share the same board structure, see board/davinci/da8xxevm/Makefile.
Very board related functions are compiled using CONFIG_MACH:
COBJS-$(CONFIG_MACH_DAVINCI_DA830_EVM) += da830evm.o COBJS-$(CONFIG_MACH_DAVINCI_DA850_EVM) += da850evm.o COBJS-$(CONFIG_MACH_DAVINCI_HAWK) += hawkboard.o
Best regards, Stefano Babic