
Alex,
On Tuesday 17 May 2011 16:11:14 Alex Waterman wrote:
What changes did you have to make? Some 8/16 bit related changes? Or something else?
I changed the hard coded value of EBC0_CFG; I forced the chip->options field to have the 16 bit bus width flag set; in board_nand_select_device() I modified the value written to the NDFC_CCR register; I think that's primarily it. The hard coded registers could be made into CONFIG_SYS defines I think, but the bus width setting... Could we make a CONFIG_SYS define that specifies the width of the bus since during the spl we don't have access to the nand chip table?
I see no problem with such an approach. How about CONFIG_SYS_NDFC_16BIT? If its not defined, then the currently used 8bit configuration is shall be selected.
It should be the goal, to use *only* the common NDFC code. If you have found some bugs, or you need some changes for 16bit devices, we should try to integrate them into the common code.
I have seen issues with the nand_read_byte16() function in nand_base.c; it seems like the cpu_to_le16() should be the other way around: le16_to_cpu(). Other than that no bugs as far as I am aware.
Hmmm. Not sure here. Perhaps this is PPC4xx specific. A better solution with less impact on other platforms using nand_base.c would be to implement a nand_read_byte() function in ndfc.c when CONFIG_SYS_NDFC_16BIT is defined. This way the default implementation from nand_base will be overridden.
Likewise much of our board specific support files are copies from the sequoia code. Would it be better to symlink to the ones that are not modified? Or is it OK to just copy the relevant source files into our own board directory and make minor adjustments as needed?
Usually we copy those files into a new board directly. When the similarities are too big, then we should probably think about splitting to common parts into some other directory (arch/powerpc/cpu/ppc4xx/ppc440epx.c ???).
OK, I see. Most of the code in board/amcc/sequoia is the same except for some of the sdram initialization and the sequoia.c file (which I renamed to tiger.c). Also the linker script differs slightly. How would we go about making those board files common (init.S, chip_config.c)?
Hard to tell without being able to look at your code and the differences. I suggest that you first create a patch with the NAND changes mentioned above and with your new board support (tiger) in a separate directory. We can discuss the details then on the list: if and how the sequoia code could/should be re-used.
Best regards, Stefan
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de