From d232376fa7b0bf3f22d57c6c747983d00c67e34d Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Sun, 29 Nov 2015 14:31:01 +0100 Subject: Add generic-nios2 machine to meta-altera Add support for the Altera NIOS2 architecture and a generic machine config. Also add Linux kernel defconfig for linux-yocto 4.1 package. Heavily based on work by Walter Goossens Signed-off-by: Marek Vasut Cc: Khem Raj Cc: Ley Foon Tan Cc: Thomas Chou Cc: Walter Goossens Cc: Yves Vandervennet --- conf/machine/generic-nios2.conf | 11 +++ .../machine/include/nios2/feature-nios2-divide.inc | 4 ++ conf/machine/include/nios2/feature-nios2-fpu.inc | 15 ++++ .../include/nios2/feature-nios2-multiply.inc | 10 +++ conf/machine/include/tune-nios2.inc | 20 ++++++ .../linux/config/generic-nios2/defconfig | 82 ++++++++++++++++++++++ recipes-kernel/linux/linux-yocto_4.1.bbappend | 17 +++++ 7 files changed, 159 insertions(+) create mode 100644 conf/machine/generic-nios2.conf create mode 100644 conf/machine/include/nios2/feature-nios2-divide.inc create mode 100644 conf/machine/include/nios2/feature-nios2-fpu.inc create mode 100644 conf/machine/include/nios2/feature-nios2-multiply.inc create mode 100644 conf/machine/include/tune-nios2.inc create mode 100644 recipes-kernel/linux/config/generic-nios2/defconfig create mode 100644 recipes-kernel/linux/linux-yocto_4.1.bbappend diff --git a/conf/machine/generic-nios2.conf b/conf/machine/generic-nios2.conf new file mode 100644 index 0000000..3177709 --- /dev/null +++ b/conf/machine/generic-nios2.conf @@ -0,0 +1,11 @@ +#@TYPE: Machine +#@Name: generic NIOS2 machine +#@DESCRIPTION: Machine configuration for nios2 machines + +require conf/machine/include/tune-nios2.inc + +TUNE_ARCH = "nios2" + +MACHINE_FEATURES = "kernel26 serial" + +KERNEL_IMAGETYPE = "zImage" diff --git a/conf/machine/include/nios2/feature-nios2-divide.inc b/conf/machine/include/nios2/feature-nios2-divide.inc new file mode 100644 index 0000000..5a29570 --- /dev/null +++ b/conf/machine/include/nios2/feature-nios2-divide.inc @@ -0,0 +1,4 @@ +TUNEVALID[hw-div] = "Enable Nios2 hardware divider." +NIOS2CCARGSDIV = "${@bb.utils.contains("TUNE_FEATURES", "hw-div", "-mhw-div", "" ,d)}" +NIOS2PKGDIV = "${@bb.utils.contains("TUNE_FEATURES", "hw-div", "-div", "" ,d)}" + diff --git a/conf/machine/include/nios2/feature-nios2-fpu.inc b/conf/machine/include/nios2/feature-nios2-fpu.inc new file mode 100644 index 0000000..5baeb40 --- /dev/null +++ b/conf/machine/include/nios2/feature-nios2-fpu.inc @@ -0,0 +1,15 @@ +TARGET_FPU = "fpu-other" + +TUNEVALID[fpu-soft] = "Use Nios2 software FPU" +TUNEVALID[fpu-custom] = "Enable Nios2 hardware FPU" +TUNEVALID[fpu-customdiv] = "Enable Nios2 hardware FPU with divider" + +# Establish which fpu is configured in TUNE_FEATURES. Soft is the default for gcc. +NIOS2CCARGSFPU_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "fpu-custom", "-mcustom-fpu-cfg=60-1", "", d)}" +NIOS2CCARGSFPU = "${@bb.utils.contains("TUNE_FEATURES", "fpu-customdiv", "-mcustom-fpu-cfg=60-2", "${NIOS2CCARGSFPU_BASIC}", d)}" + +NIOS2PKGFPU_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "fpu-custom", "-fpu", "", d)}" +NIOS2PKGFPU = "${@bb.utils.contains("TUNE_FEATURES", "fpu-customdiv", "-fpudiv", "${NIOS2PKGFPU_BASIC}", d)}" + +TUNECONFLICTS[fpu-custom] = "fpu-soft fpu-customdiv" +TUNECONFLICTS[fpu-customdiv] = "fpu-soft fpu-custom" diff --git a/conf/machine/include/nios2/feature-nios2-multiply.inc b/conf/machine/include/nios2/feature-nios2-multiply.inc new file mode 100644 index 0000000..3dc2ccb --- /dev/null +++ b/conf/machine/include/nios2/feature-nios2-multiply.inc @@ -0,0 +1,10 @@ +TUNEVALID[hw-mul] = "Enable Nios2 Hardware Multiply" +TUNEVALID[hw-mulx] = "Enable Nios2 Extended Hardware Multiply" + +# Establish which Multiply output result size to use +NIOS2CCARGSMUL = "${@bb.utils.contains("TUNE_FEATURES", "hw-mul", "-mhw-mul", "" ,d)}" +NIOS2CCARGSMUL += "${@bb.utils.contains("TUNE_FEATURES", "hw-mulx", "-mhw-mulx", "" ,d)}" + +NIOS2PKGMUL_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "hw-mul", "-mul", "" ,d)}" +NIOS2PKGMUL = "${@bb.utils.contains("TUNE_FEATURES", "hw-mulx", "-mulx", "${NIOS2PKGMUL_BASIC}" ,d)}" + diff --git a/conf/machine/include/tune-nios2.inc b/conf/machine/include/tune-nios2.inc new file mode 100644 index 0000000..4a132a4 --- /dev/null +++ b/conf/machine/include/tune-nios2.inc @@ -0,0 +1,20 @@ +#@TYPE: Machine configuration +#@NAME: nios2 + +DEFAULTTUNE ?= "nios2" + +TUNE_ARCH = "nios2el" + +require conf/machine/include/nios2/feature-nios2-multiply.inc +require conf/machine/include/nios2/feature-nios2-divide.inc +require conf/machine/include/nios2/feature-nios2-fpu.inc + +AVAILTUNES += "nios2" +TUNEVALID[nios2] = "nios2" +TUNE_FEATURES_tune-nios2 += "nios2" + +TUNE_CCARGS += "-mel ${NIOS2CCARGSDIV} ${NIOS2CCARGSFPU} ${NIOS2CCARGSMUL}" +TUNE_PKGARCH = "nios2${NIOS2PKGMUL}${NIOS2PKGDIV}${NIOS2PKGFPU}" +PACKAGE_EXTRA_ARCHS_tune-nios2 = "${TUNE_PKGARCH}" + +CSL_TARGET_SYS_nios2 = "nios2-linux-gnu" diff --git a/recipes-kernel/linux/config/generic-nios2/defconfig b/recipes-kernel/linux/config/generic-nios2/defconfig new file mode 100644 index 0000000..7d712aa --- /dev/null +++ b/recipes-kernel/linux/config/generic-nios2/defconfig @@ -0,0 +1,82 @@ +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_ELF_CORE is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_SHMEM is not set +# CONFIG_AIO is not set +CONFIG_EMBEDDED=y +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MEM_BASE=0x10000000 +CONFIG_NIOS2_HW_MUL_SUPPORT=y +CONFIG_NIOS2_HW_DIV_SUPPORT=y +CONFIG_CUSTOM_CACHE_SETTINGS=y +CONFIG_NIOS2_DCACHE_SIZE=0x8000 +CONFIG_NIOS2_ICACHE_SIZE=0x8000 +# CONFIG_CMDLINE_IGNORE_DTB is not set +CONFIG_PASS_CMDLINE=y +CONFIG_BOOT_LINK_OFFSET=0x00800000 +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_FW_LOADER is not set +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_NETDEVICES=y +CONFIG_ALTERA_TSE=y +CONFIG_MARVELL_PHY=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO_SERPORT is not set +# CONFIG_VT is not set +CONFIG_SERIAL_ALTERA_JTAGUART=y +CONFIG_SERIAL_ALTERA_JTAGUART_CONSOLE=y +CONFIG_SERIAL_ALTERA_UART=y +# CONFIG_HW_RANDOM is not set +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_ALTERA=y +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_JFFS2_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_ROOT_NFS=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_DEBUG_INFO=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_KGDB=y diff --git a/recipes-kernel/linux/linux-yocto_4.1.bbappend b/recipes-kernel/linux/linux-yocto_4.1.bbappend new file mode 100644 index 0000000..06bec2c --- /dev/null +++ b/recipes-kernel/linux/linux-yocto_4.1.bbappend @@ -0,0 +1,17 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/config:" + +COMPATIBLE_MACHINE_generic-nios2 = "generic-nios2" +SRC_URI_append_nios2 = " file://defconfig " + +# Force machine Tunings in kernel config +do_configure_prepend_nios2() { + sed -i -e /CONFIG_NIOS2_HW_MUL_SUPPORT/d ${WORKDIR}/defconfig + sed -i -e /CONFIG_NIOS2_HW_MULX_SUPPORT/d ${WORKDIR}/defconfig + sed -i -e /CONFIG_NIOS2_HW_DIV_SUPPORT/d ${WORKDIR}/defconfig + sed -i -e /CONFIG_NIOS2_FPU_SUPPORT/d ${WORKDIR}/defconfig + echo "${@base_contains('TUNE_FEATURES', 'hw-mul', 'CONFIG_NIOS2_HW_MUL_SUPPORT=y', '#CONFIG_NIOS2_HW_MUL_SUPPORT is not set', d)}" >> ${WORKDIR}/defconfig + echo "${@base_contains('TUNE_FEATURES', 'hw-mulx', 'CONFIG_NIOS2_HW_MULX_SUPPORT=y', '#CONFIG_NIOS2_HW_MULX_SUPPORT is not set', d)}" >> ${WORKDIR}/defconfig + echo "${@base_contains('TUNE_FEATURES', 'hw-div', 'CONFIG_NIOS2_HW_DIV_SUPPORT=y', '#CONFIG_NIOS2_HW_DIV_SUPPORT is not set', d)}" >> ${WORKDIR}/defconfig + echo "${@base_contains('TUNE_FEATURES', 'fpu-custom', 'CONFIG_NIOS2_FPU_SUPPORT=y', '#CONFIG_NIOS2_FPU_SUPPORT is not set', d)}" >> ${WORKDIR}/defconfig + echo "${@base_contains('TUNE_FEATURES', 'fpu-customdiv', 'CONFIG_NIOS2_FPU_SUPPORT=y', '#CONFIG_NIOS2_FPU_SUPPORT is not set', d)}" >> ${WORKDIR}/defconfig +} -- cgit v1.2.3-54-g00ecf