Dear Haiying Wang, In message <1296509955.2049.543.camel@haiying-laptop> you wrote: > > > Why is this config.mk needed? Can you not do all this in the board > > config file instead? > Do you mean the board header file or arch/powerpc/config.mk? I did not see > any LDSCRIPT defined in Freescale board header file.
I mean the board config header file, include/configs/<name>.h > > > diff --git a/board/freescale/p1021mds/ddr.c > > > b/board/freescale/p1021mds/ddr.c > > > new file mode 100644 > > > index 0000000..594a4a8 > > > --- /dev/null > > > +++ b/board/freescale/p1021mds/ddr.c > > > > It seems there are a number of functions here which ar actually shared > > with other files, for example board/freescale/p1022ds/ddr.c. > Every boards has its board specific ddr parameters which are defined the its > own board ddr.c. The common code for ddr has been defined in > arch/powerpc/cpu/mpc8xxx/ddr/. Well, but there is tons of common code. For example, all of board/freescale/corenet_ds/ddr.c board/freescale/mpc8536ds/ddr.c board/freescale/mpc8540ads/ddr.c board/freescale/mpc8541cds/ddr.c board/freescale/mpc8544ds/ddr.c board/freescale/mpc8548cds/ddr.c board/freescale/mpc8555cds/ddr.c board/freescale/mpc8560ads/ddr.c board/freescale/mpc8568mds/ddr.c board/freescale/mpc8569mds/ddr.c board/freescale/mpc8572ds/ddr.c board/freescale/mpc8610hpcd/ddr.c board/freescale/mpc8641hpcn/ddr.c board/freescale/p1021mds/ddr.c board/freescale/p1022ds/ddr.c board/freescale/p2020ds/ddr.c share the same function unsigned int fsl_ddr_get_mem_data_rate(void) { return get_ddr_freq(0); } And board/freescale/p1021mds/ddr.c board/freescale/p1022ds/ddr.c share (except for the comment) the same void fsl_ddr_get_spd(ddr3_spd_eeprom_t *ctrl_dimms_spd, unsigned int ctrl_num) while board/freescale/corenet_ds/ddr.c board/freescale/mpc8569mds/ddr.c use another variant, but again both boards the same one. > If you go to see each ddr.c, you can find there is > fsl_ddr_board_options() which defines the different values for each > board. Also fsl_ddr_get_spd() is also highly dependent on board, like > ddr type(ddr2 or ddr3), i2c spd eeprom address, ddr controller# etc. Actually this is not quite true. See examples above. > > > +void board_lmb_reserve(struct lmb *lmb) > > > +{ > > > + cpu_mp_lmb_reserve(lmb); > > > +} > > > > How many board/freescale/<name>/<name>.c file share this same code? > There are some, but I don't know whether there will be difference coming in > later. Then we can use a common implementation for all where it fits, and use board specific code only where needed. > > > diff --git a/board/freescale/p1021mds/tlb.c > > > b/board/freescale/p1021mds/tlb.c > > > new file mode 100644 > > > index 0000000..30af6dd > > > --- /dev/null > > > +++ b/board/freescale/p1021mds/tlb.c > > > > How much of this is actually different from - say - > > board/freescale/p1022ds/tlb.c ? > The tlb.c is also a highly board dependent file. Different boards have > different supported peripherals. If you look at p1021 and p1022's tlb.c > files, you can see p1022ds has 3 PCIE, P1021 has 2, P1022ds has NOR flash, > P1021MDS only has NAND flash... etc Yes, there are differences. But it seems there is more common code than differing one? Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de A penny saved is a penny to squander. - Ambrose Bierce _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot