* Rewrite for handling most xilinx platforms * Add helper functions for configuring the target board * User must add in local.conf: TARGET_ARCH = "powerpc" | "microblaze" XILINX_BOARD = "ml401" | "ml403" | "ml410" | "ml507" | "ml510" whit this varibales u-boot and the linux kernel gets configured for a selected board.
Signed-off-by: Adrian Alonso <aalons...@gmail.com> --- classes/xilinx-bsp.bbclass | 109 +++++++++++++++++++++++++++++++++++--------- 1 files changed, 87 insertions(+), 22 deletions(-) diff --git a/classes/xilinx-bsp.bbclass b/classes/xilinx-bsp.bbclass index d32c60e..77e7faa 100644 --- a/classes/xilinx-bsp.bbclass +++ b/classes/xilinx-bsp.bbclass @@ -14,6 +14,47 @@ #Xilinx ML403 #Xilinx ML507 #More to come soon ;) +#oenote "ML403 board setup" +# Treat this as legacy substitution find when xparatemer was deprecated in favor of dts +#cp -pPR ${XILINX_BSP_PATH}/ppc405_0/libsrc/linux_2_6_v1_00_a/linux/arch/ppc/platforms/4xx/xparameters/xparameters_ml40x.h \ +#${S}/arch/ppc/platforms/4xx/xparameters/xparameters_ml403.h + +def map_target(a, d): + import re + board = bb.data.getVar('XILINX_BOARD', d, 1) + + if re.match('powerpc', a): + cpu = bb.data.getVar('TARGET_CPU', d, 1) + return 'ppc' + cpu + '-' + board + else: + return 'system' + + +def uboot_machine(a, d): + import re + + board = bb.data.getVar('XILINX_BOARD', d, 1) + + if board in ['ml300', 'ml401', 'ml405', 'ml507']: + return board + '_config' + elif re.match('powerpc', a): + return 'xilinx-ppc' + bb.data.getVar('TARGET_CPU', d, 1) + '-generic_config' + else: + return 'microblaze-generic_config' + +def uboot_target(a, d): + import re + + board = bb.data.getVar('XILINX_BOARD', d, 1) + target = bb.data.getVar('TARGET_CPU', d, 1) + '-generic' + + if board in ['ml300', 'ml401', 'ml405', 'ml507']: + return board + elif re.match('powerpc', a): + return 'ppc' + target + else: + return target + do_configure_prepend() { @@ -21,27 +62,47 @@ do_configure_prepend() { #now depending on the board type and arch do what is nessesary if [ -n "${XILINX_BSP_PATH}" ]; then - case "${XILINX_BOARD}" in - ml403 | ML403) - oenote "ML403 board setup" - cp -pPR ${XILINX_BSP_PATH}/ppc405_0/libsrc/linux_2_6_v1_00_a/linux/arch/ppc/platforms/4xx/xparameters/xparameters_ml40x.h \ - ${S}/arch/ppc/platforms/4xx/xparameters/xparameters_ml403.h - ;; - ml507 | ML507) - oenote "Xilinx ML507 board setup" + if [ -n "${XILINX_BOARD}" ]; then + if [ -d "${S}/arch/${TARGET_ARCH}/boot" ]; then dts=`find "${XILINX_BSP_PATH}" -name *.dts -print` - if [ -n "$dts" ]; then - oenote "Replacing device tree with ${dts}" - cp -pP ${dts} ${S}/arch/powerpc/boot/dts/virtex440-ml507.dts + if [ -e "$dts" ]; then + oenote "Replacing device tree to match hardware model" + if [ "${TARGET_ARCH}" == "powerpc" ]; then + cp -pP ${dts} ${S}/arch/powerpc/boot/dts/virtex${TARGET_BOARD}.dts + else + cp -pP ${dts} ${S}/arch/microblaze/platform/generic/${TARGET_BOARD}.dts + fi + else + oefatal "No device tree found, missing hardware ref design?" + exit 1 + fi + elif [ -d "${S}/board/xilinx" ]; then + oenote "Replacing xparameters header to match hardware model" + #xparam=`find "${XILINX_BSP_PATH}" -name xparameters.h -print` + if [ "${TARGET_ARCH}" == "powerpc" ]; then + xparam="${XILINX_BSP_PATH}/ppc${TARGET_CPU}_0/include/xparameters.h" + cpu="PPC`echo ${TARGET_CPU} | tr '[:lower:]' '[:upper:]'`" + else + xparam="${XILINX_BSP_PATH}/${TARGET_CPU}_0/include/xparameters.h" + cpu=`echo ${TARGET_CPU} | tr '[:lower:]' '[:upper:]'` + fi + if [ -e "$xparam" ]; then + cp ${xparam} ${S}/board/xilinx/${UBOOT_TARGET} + echo "/*** Cannonical definitions ***/ +#define XPAR_PLB_CLOCK_FREQ_HZ XPAR_PROC_BUS_0_FREQ_HZ +#define XPAR_CORE_CLOCK_FREQ_HZ XPAR_CPU_${cpu}_CORE_CLOCK_FREQ_HZ +#ifndef XPAR_DDR2_SDRAM_MEM_BASEADDR +# define XPAR_DDR2_SDRAM_MEM_BASEADDR XPAR_DDR_SDRAM_MPMC_BASEADDR +#endif +#define XPAR_PCI_0_CLOCK_FREQ_HZ 0" >> ${S}/board/xilinx/${UBOOT_TARGET}/xparameters.h else - oenote "Device tree not found in project dir" + oefatal "No xparameters header file found, missing hardware ref design?" fi - ;; - *) - oefatal "! Unknow Xilinx board ! Exit ..." - exit 1 - ;; - esac + fi + else + oefatal "XILINX_BOARD not defined ! Exit" + exit 1 + fi else oefatal "XILINX_BSP_PATH not defined ! Exit" exit 1 @@ -49,7 +110,11 @@ fi } - - - - +do_deploy_prepend() { +# Install u-boot elf image +if [ -d "${XILINX_BSP_PATH}" ]; then + if [ -e "${S}/u-boot" ]; then + install ${S}/u-boot ${XILINX_BSP_PATH} + fi +fi +} -- 1.7.1.1 _______________________________________________ Openembedded-devel mailing list Openembedded-devel@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel