diff options
Diffstat (limited to 'meta-quanta/meta-olympus-nuvoton')
21 files changed, 1054 insertions, 0 deletions
diff --git a/meta-quanta/meta-olympus-nuvoton/conf/bblayers.conf.sample b/meta-quanta/meta-olympus-nuvoton/conf/bblayers.conf.sample new file mode 100644 index 000000000..a4fbed41f --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/conf/bblayers.conf.sample @@ -0,0 +1,27 @@ +# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +LCONF_VERSION = "8" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-openembedded/meta-oe \ + ##OEROOT##/meta-openembedded/meta-networking \ + ##OEROOT##/meta-openembedded/meta-python \ + ##OEROOT##/meta-phosphor \ + ##OEROOT##/meta-nuvoton \ + ##OEROOT##/meta-quanta \ + ##OEROOT##/meta-quanta/meta-olympus-nuvoton \ + " +BBLAYERS_NON_REMOVABLE ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-openembedded/meta-oe \ + ##OEROOT##/meta-openembedded/meta-networking \ + ##OEROOT##/meta-openembedded/meta-python \ + ##OEROOT##/meta-phosphor \ + ##OEROOT##/meta-nuvoton \ + ##OEROOT##/meta-quanta \ + ##OEROOT##/meta-quanta/meta-olympus-nuvoton \ + " diff --git a/meta-quanta/meta-olympus-nuvoton/conf/conf-notes.txt b/meta-quanta/meta-olympus-nuvoton/conf/conf-notes.txt new file mode 100644 index 000000000..9b3c01a55 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/conf/conf-notes.txt @@ -0,0 +1,2 @@ +Common targets are: + obmc-phosphor-image diff --git a/meta-quanta/meta-olympus-nuvoton/conf/layer.conf b/meta-quanta/meta-olympus-nuvoton/conf/layer.conf new file mode 100644 index 000000000..5d5fdb733 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "olympus-nuvoton-layer" +BBFILE_PATTERN_olympus-nuvoton-layer := "^${LAYERDIR}/" +LAYERSERIES_COMPAT_olympus-nuvoton-layer = "warrior zeus" diff --git a/meta-quanta/meta-olympus-nuvoton/conf/local.conf.sample b/meta-quanta/meta-olympus-nuvoton/conf/local.conf.sample new file mode 100644 index 000000000..76d1a9716 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/conf/local.conf.sample @@ -0,0 +1,17 @@ +MACHINE ??= "olympus-nuvoton" +DISTRO ?= "openbmc-phosphor" +PACKAGE_CLASSES ?= "package_rpm" +SANITY_TESTED_DISTROS_append ?= " *" +EXTRA_IMAGE_FEATURES = "debug-tweaks" +USER_CLASSES ?= "buildstats image-mklibs image-prelink" +PATCHRESOLVE = "noop" +BB_DISKMON_DIRS = "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" +CONF_VERSION = "1" diff --git a/meta-quanta/meta-olympus-nuvoton/conf/machine/olympus-nuvoton.conf b/meta-quanta/meta-olympus-nuvoton/conf/machine/olympus-nuvoton.conf new file mode 100644 index 000000000..c8e8257ca --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/conf/machine/olympus-nuvoton.conf @@ -0,0 +1,26 @@ +KMACHINE = "nuvoton" +KERNEL_DEVICETREE = "${KMACHINE}-npcm750-runbmc-olympus.dtb" + +require conf/machine/include/npcm7xx.inc +require conf/machine/include/obmc-bsp-common.inc + +FLASH_SIZE = "32768" +FLASH_UBOOT_OFFSET = "0" +FLASH_KERNEL_OFFSET = "2048" +FLASH_ROFS_OFFSET = "8192" +FLASH_RWFS_OFFSET = "29696" + +UBOOT_MACHINE = "PolegRunBMC_defconfig" + +IMAGE_FSTYPES += " cpio.${INITRAMFS_CTYPE}.u-boot" +IMAGE_FSTYPES += " mtd-ubi-tar" + +OBMC_MACHINE_FEATURES += "\ + obmc-phosphor-fan-mgmt \ + obmc-phosphor-chassis-mgmt \ + obmc-phosphor-flash-mgmt \ + obmc-host-ipmi \ + obmc-host-state-mgmt \ + obmc-chassis-state-mgmt \ + obmc-bmc-state-mgmt \ + " diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/files/BootBlockAndHeader_olympus.xml b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/files/BootBlockAndHeader_olympus.xml new file mode 100644 index 000000000..58723e60e --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/files/BootBlockAndHeader_olympus.xml @@ -0,0 +1,166 @@ +<!-- SPDX-License-Identifier: GPL-2.0 +# +# Nuvoton IGPS: Image Generation And Programming Scripts For Poleg BMC +# +# Copyright (C) 2018 Nuvoton Technologies, All Rights Reserved +#---------------------------------------------------------------------------> + +<?xml version="1.0" encoding="UTF-8"?> + +<Bin_Ecc_Map> + <!-- BMC mandatory fields --> + <ImageProperties> + <BinSize>0</BinSize> <!-- If 0 the binary size will be calculated by the tool --> + <PadValue>0xFF</PadValue> <!-- Byte value to pad the empty areas, default is 0 --> + </ImageProperties> + + <BinField> + <!-- BootBlock tag (0x50 0x07 0x55 0xAA 0x54 0x4F 0x4F 0x42) or + uboot tag (0x55 0x42 0x4F 0x4F 0x54 0x42 0x4C 0x4B) --> + <name>StartTag</name> <!-- name of field --> + <config> + <offset>0</offset> <!-- offset in the header --> + <size>0x8</size> <!-- size in the header --> + </config> + <content format='bytes'>0x50 0x07 0x55 0xAA 0x54 0x4F 0x4F 0x42</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Code destination address, 32-bit aligned: for BootBlock should be 0xFFFD5E00 so code will run in 0xFFFD6000 as linked for --> + <name>DestAddr</name> <!-- name of field --> + <config> + <offset>0x140</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0xFFFD5E00</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- BootBlock or u-boot Code size --> + <name>CodeSize</name> <!-- name of field --> + <config> + <offset>0x144</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='FileSize'>Poleg_bootblock.bin</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- The BootBlock or u-boot binary file --> + <name>Code</name> <!-- name of field --> + <config> + <offset>0x200</offset> <!-- offset in the header --> + <size format='FileSize'>Poleg_bootblock.bin</size> <!-- size in the header calculated by tool--> + </config> + <content format='FileContent'>Poleg_bootblock.bin</content> <!-- content the user should fill --> + </BinField> + + <!-- BMC optional fields --> + <BinField> + <!-- Word contents copied by ROM code to FIU0 FIU_DRD_CFG register --> + <name>FIU0_DRD_CFG_Set</name> <!-- name of field --> + <config> + <offset>0x108</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x030011BB</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines the clock divide ratio from AHB to FIU0 clock --> + <name>FIU_Clk_Divider</name> <!-- name of field --> + <config> + <offset>0x10C</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>4</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Version (Major.Minor) --> + <name>Version</name> <!-- name of field --> + <config> + <offset>0x148</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x0201</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Board manufaturer ( Dell = 0, Nuvoton = 100, Google = 1, MS = 2) --> + <name>BOARD_VENDOR</name> <!-- name of field --> + <config> + <offset>0x124</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>100</content> <!--Board_manufacturer: Nuvoton--> + </BinField> + <BinField> + <!-- Board type ( DRB = 0, SVB = 1, EB = 2,HORIZON = 3, SANDSTORM = 4, ROCKAWAY = 100 RunBMC = 10) --> + <!-- WARNING: Currently this value is only printed to serial. Set BOARD_VENDOR to 1 get Dell specific customization. --> + <name>BOARD_TYPE</name> <!-- name of field --> + <config> + <offset>0x120</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x0A</content> <!--Board_type: SVB--> + </BinField> + + <!-- the next two fields are available since version 10.7.0 --> + <BinField> + <!-- supported values: 333,444,500,600,666,700,720,750,775,787,800,825,850,900,950,1000,1060 --> + <name>MC_FREQ_IN_MHZ</name> <!-- name of field --> + <config> + <offset>0x128</offset> <!-- offset in the header --> + <size>0x2</size> <!-- size in the header --> + </config> + <content format='32bit'>800</content> + </BinField> + <BinField> + <!-- supporeted values: 333,500,600,666,700,720,750,800,825,850,900,950,1000,1060 --> + <name>CPU_FREQ_IN_MHZ</name> <!-- name of field --> + <config> + <offset>0x12A</offset> <!-- offset in the header --> + <size>0x2</size> <!-- size in the header --> + </config> + <content format='32bit'>800</content> + </BinField> + + <BinField> + <!-- MC_CONFIG. + Bit 0: MC_DISABLE_CAPABILITY_INPUT_DQS_ENHANCE_TRAINING (0x01) + Bit 1: MC_CAPABILITY_IGNORE_ECC_DEVICE (0x02) --> + <name>MC_CONFIG</name> <!-- name of field --> + <config> + <offset>0x12C</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='32bit'>0x01</content> + </BinField> + + <BinField> + <!-- HOST_IF. + 0xFF: LPC backward compatible + 0x00: LPC. + 0x01: eSPI + 0x02: GPIOs TRIS. --> + <name>HOST_IF</name> <!-- name of field --> + <config> + <offset>0x12D</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='32bit'>0x00</content> + </BinField> + + <!-- reserved fields --> + <BinField> + <!-- reserved field for sample --> + <name>My_reserved</name> <!-- name of field --> + <config> + <offset>0x110</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='bytes'>0xFF 0xFF 0xFF 0xFF</content> <!-- content the user should fill --> + </BinField> + +</Bin_Ecc_Map> diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/files/UbootHeader_olympus.xml b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/files/UbootHeader_olympus.xml new file mode 100644 index 000000000..1612a8368 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/files/UbootHeader_olympus.xml @@ -0,0 +1,191 @@ +<!-- SPDX-License-Identifier: GPL-2.0 +# +# Nuvoton IGPS: Image Generation And Programming Scripts For Poleg BMC +# +# Copyright (C) 2018 Nuvoton Technologies, All Rights Reserved +#---------------------------------------------------------------------------> + +<?xml version="1.0" encoding="UTF-8"?> + +<Bin_Ecc_Map> + <!-- BMC mandatory fields --> + <ImageProperties> + <BinSize>0</BinSize> <!-- If 0 the binary size will be calculated by the tool --> + <PadValue>0xFF</PadValue> <!-- Byte value to pad the empty areas, default is 0 --> + </ImageProperties> + + <BinField> + <!-- BootBlock tag (0x50 0x07 0x55 0xAA 0x54 0x4F 0x4F 0x42) or + uboot tag (0x55 0x42 0x4F 0x4F 0x54 0x42 0x4C 0x4B) --> + <name>StartTag</name> <!-- name of field --> + <config> + <offset>0</offset> <!-- offset in the header --> + <size>0x8</size> <!-- size in the header --> + </config> + <content format='bytes'>0x55 0x42 0x4F 0x4F 0x54 0x42 0x4C 0x4B</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Code destination address, 32-bit aligned: for u-boot should be 0x80005000 so code will run in 0x80005200 as linked for --> + <name>DestAddr</name> <!-- name of field --> + <config> + <offset>0x140</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x8000</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- BootBlock or u-boot Code size --> + <name>CodeSize</name> <!-- name of field --> + <config> + <offset>0x144</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='FileSize'>u-boot.bin</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- The BootBlock or u-boot binary file --> + <name>Code</name> <!-- name of field --> + <config> + <offset>0x200</offset> <!-- offset in the header --> + <size format='FileSize'>u-boot.bin</size> <!-- size in the header calculated by tool--> + </config> + <content format='FileContent'>u-boot.bin</content> <!-- content the user should fill --> + </BinField> + + <!-- BMC optional fields --> + <BinField> + <!-- Word contents copied by ROM code to FIU0 FIU_DRD_CFG register --> + <name>FIU0_DRD_CFG_Set</name> <!-- name of field --> + <config> + <offset>0x108</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x030111BC</content> <!-- content the user should fill 0x030032EB --> + </BinField> + + <BinField> + <!-- Defines the clock divide ratio from AHB to FIU0 clock --> + <name>FIU0_Clk_Divider</name> <!-- name of field --> + <config> + <offset>0x10C</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines if FIU0 CS1 is enabled --> + <name>fiu0_cs1_en</name> <!-- name of field --> + <config> + <offset>0x10D</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines if FIU0 CS2 is enabled --> + <name>fiu0_cs2_en</name> <!-- name of field --> + <config> + <offset>0x10E</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines if FIU0 CS3 is enabled --> + <name>fiu0_cs3_en</name> <!-- name of field --> + <config> + <offset>0x10F</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <!-- BMC optional fields --> + <BinField> + <!-- Word contents copied by ROM code to FIU3 FIU_DRD_CFG register --> + <name>FIU3_DRD_CFG_Set</name> <!-- name of field --> + <config> + <offset>0x110</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x030011BB</content> <!-- content the user should fill --> + </BinField> + + <!-- BMC optional fields --> + <BinField> + <!-- Word contents copied by ROM code to FIU3 FIU_DRD_CFG register --> + <name>FIU3_DWR_CFG_Set</name> <!-- name of field --> + <config> + <offset>0x114</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines the clock divide ratio from AHB to FIU3 clock --> + <name>FIU3_Clk_Divider</name> <!-- name of field --> + <config> + <offset>0x118</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines if FIU3 CS0 is enabled --> + <name>fiu3_cs0_en</name> <!-- name of field --> + <config> + <offset>0x119</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines if FIU3 CS1 is enabled --> + <name>fiu3_cs1_en</name> <!-- name of field --> + <config> + <offset>0x11A</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines if FIU3 CS2 is enabled --> + <name>fiu3_cs2_en</name> <!-- name of field --> + <config> + <offset>0x11B</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Defines if FIU3 CS3 is enabled --> + <name>fiu3_cs3_en</name> <!-- name of field --> + <config> + <offset>0x11C</offset> <!-- offset in the header --> + <size>0x1</size> <!-- size in the header --> + </config> + <content format='bytes'>0x0</content> <!-- content the user should fill --> + </BinField> + + <BinField> + <!-- Version (Major.Minor) --> + <name>Version</name> <!-- name of field --> + <config> + <offset>0x148</offset> <!-- offset in the header --> + <size>0x4</size> <!-- size in the header --> + </config> + <content format='32bit'>0x0201</content> <!-- content the user should fill --> + </BinField> + +</Bin_Ecc_Map> diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/npcm7xx-bingo-native_%.bbappend b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/npcm7xx-bingo-native_%.bbappend new file mode 100644 index 000000000..4de20b2da --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/images/npcm7xx-bingo-native_%.bbappend @@ -0,0 +1,12 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI_remove = "file://BootBlockAndHeader_EB.xml" +SRC_URI_remove = "file://UbootHeader_EB.xml" +SRC_URI_append += " file://BootBlockAndHeader_olympus.xml" +SRC_URI_append += " file://UbootHeader_olympus.xml" + + +do_install_append() { + install ${WORKDIR}/BootBlockAndHeader_olympus.xml ${D}${bindir}/BootBlockAndHeader_EB.xml + install ${WORKDIR}/UbootHeader_olympus.xml ${D}${bindir}/UbootHeader_EB.xml +} + diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton/fw_env.config b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton/fw_env.config new file mode 100644 index 000000000..0c384273f --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton/fw_env.config @@ -0,0 +1,24 @@ +# Configuration file for fw_(printenv/setenv) utility. +# Up to two entries are valid, in this case the redundant +# environment sector is assumed present. +# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash. +# Futhermore, if the Flash sector size is ommitted, this value is assumed to +# be the same as the Environment size, which is valid for NOR and SPI-dataflash + +# NOR example +# MTD device name Device offset Env. size Flash sector size Number of sectors +/dev/mtd2 0x0000 0x40000 0x4000 + +# MTD SPI-dataflash example +# MTD device name Device offset Env. size Flash sector size Number of sectors +#/dev/mtd5 0x4200 0x4200 +#/dev/mtd6 0x4200 0x4200 + +# NAND example +#/dev/mtd0 0x4000 0x4000 0x20000 2 + +# Block device example +#/dev/mmcblk0 0xc0000 0x20000 + +# VFAT example +#/boot/uboot.env 0x0000 0x4000 diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton_%.bbappend b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton_%.bbappend new file mode 100644 index 000000000..91518decf --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://fw_env.config" + +do_install_append () { + install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config +} diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-kernel/linux/linux-nuvoton/olympus-nuvoton.cfg b/meta-quanta/meta-olympus-nuvoton/recipes-kernel/linux/linux-nuvoton/olympus-nuvoton.cfg new file mode 100644 index 000000000..d970410dd --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-kernel/linux/linux-nuvoton/olympus-nuvoton.cfg @@ -0,0 +1,77 @@ +CONFIG_HWMON=y +CONFIG_SENSORS_TMP100=y +CONFIG_SENSORS_LM75=y +CONFIG_SENSORS_FAN=y +CONFIG_SENSORS_ADC128D818=y +CONFIG_SENSORS_ADM1275=y +CONFIG_SENSORS_TMP102=y +CONFIG_SENSORS_TMP421=y + +CONFIG_PMBUS=y +CONFIG_SENSORS_PMBUS=y +CONFIG_SENSORS_INA2XX=y +CONFIG_SENSORS_TPS53679=y + +CONFIG_IIO=y +CONFIG_IIO_MUX=y +CONFIG_NPCM_ADC=y +CONFIG_SENSORS_IIO_HWMON=y + +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +CONFIG_OVERLAY_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_XZ=y +CONFIG_JFFS2_FS=y + +CONFIG_SPI=y +CONFIG_SPI_NPCM_FIU=y +CONFIG_MTD_M25P80=y +CONFIG_SPI_NPCM_PSPI=y + +CONFIG_NET_NCSI=y + +CONFIG_EEPROM_AT24=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_SLAVE_EEPROM=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCF857X=y +CONFIG_MUX_MMIO=y +CONFIG_USB_U_ETHER=y +CONFIG_USB_F_ECM=y +CONFIG_USB_F_EEM=y +CONFIG_USB_F_SUBSET=y +CONFIG_USB_F_RNDIS=y +CONFIG_USB_F_MASS_STORAGE=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_HID=y + +CONFIG_MEDIA_SUPPORT=y +CONFIG_VIDEO_NUVOTON=y +CONFIG_NPCM750_VCD=y +CONFIG_NPCM750_ECE=y +CONFIG_FORCE_MAX_ZONEORDER=12 + +CONFIG_USB_GADGET_NPCM_USB2=y + +CONFIG_PECI=y +CONFIG_PECI_NPCM=y +CONFIG_MFD_INTEL_PECI_CLIENT=y +CONFIG_SENSORS_PECI_CPUTEMP=y +CONFIG_SENSORS_PECI_DIMMTEMP=y +CONFIG_RESET_NPCM=y + +CONFIG_I2C_SLAVE_MQUEUE=y +CONFIG_NUVOTON_JTAG=y diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-kernel/linux/linux-nuvoton_%.bbappend b/meta-quanta/meta-olympus-nuvoton/recipes-kernel/linux/linux-nuvoton_%.bbappend new file mode 100644 index 000000000..0ebbb1aae --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-kernel/linux/linux-nuvoton_%.bbappend @@ -0,0 +1,3 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/linux-nuvoton:" + +SRC_URI += "file://olympus-nuvoton.cfg" diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/console/files/obmc-console.conf b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/console/files/obmc-console.conf new file mode 100644 index 000000000..f99eaff47 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/console/files/obmc-console.conf @@ -0,0 +1 @@ +baud = 57600 diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/console/obmc-console_%.bbappend b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/console/obmc-console_%.bbappend new file mode 100644 index 000000000..5967ce1bb --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/console/obmc-console_%.bbappend @@ -0,0 +1,12 @@ +SUMMARY = "Nuvoton OpenBMC console daemon" +DESCRIPTION = "Nuvoton Daemon to handle UART console connections" +HOMEPAGE = "http://github.com/openbmc/obmc-console" +PR = "r1" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +OBMC_CONSOLE_HOST_TTY := "ttyS2" + +do_build_append() { + install -m 0644 ${THISDIR}/files/${PN}.conf ${WORKDIR}/${PN}.conf +} diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/config-olympus-nuvoton.json b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/config-olympus-nuvoton.json new file mode 100644 index 000000000..5a78db6ee --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/config-olympus-nuvoton.json @@ -0,0 +1,400 @@ +{ + "sensors" : [ + { + "name": "fan1", + "type": "fan", + "readPath": "/xyz/openbmc_project/sensors/fan_tach/fan1", + "writePath": "/sys/devices/platform/ahb/ahb:apb/f0103000.pwm-fan-controller/hwmon/**/pwm1", + "min": 0, + "max": 255 + }, + { + "name": "Core_0_CPU0", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_0_CPU0", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_0_CPU1", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_0_CPU1", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_1_CPU0", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_1_CPU0", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_1_CPU1", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_1_CPU1", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_2_CPU0", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_2_CPU0", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_2_CPU1", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_2_CPU1", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_3_CPU0", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_3_CPU0", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_3_CPU1", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_3_CPU1", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_4_CPU0", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_4_CPU0", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_4_CPU1", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_4_CPU1", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_5_CPU0", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_5_CPU0", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + }, + { + "name": "Core_5_CPU1", + "type": "temp", + "readPath": "/xyz/openbmc_project/sensors/temperature/Core_5_CPU1", + "writePath": "", + "min": 0, + "max": 0, + "timeout": 0 + } + ], + "zones" : [ + { + "id": 0, + "minThermalOutput": 0.0, + "failsafePercent": 100.0, + "pids": [ + { + "name": "fan1", + "type": "fan", + "inputs": ["fan1"], + "setpoint": 40.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": 0.0, + "integralCoeff": 0.0, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 1.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 3.0, + "outLim_max": 100.0, + "slewNeg": 0.0, + "slewPos": 0.0 + } + }, + { + "name": "Core_0_CPU0", + "type": "temp", + "inputs": ["Core_0_CPU0"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_0_CPU1", + "type": "temp", + "inputs": ["Core_0_CPU1"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_1_CPU0", + "type": "temp", + "inputs": ["Core_1_CPU0"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_1_CPU1", + "type": "temp", + "inputs": ["Core_1_CPU1"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_2_CPU0", + "type": "temp", + "inputs": ["Core_2_CPU0"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_2_CPU1", + "type": "temp", + "inputs": ["Core_2_CPU1"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_3_CPU0", + "type": "temp", + "inputs": ["Core_3_CPU0"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_3_CPU1", + "type": "temp", + "inputs": ["Core_3_CPU1"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_4_CPU0", + "type": "temp", + "inputs": ["Core_4_CPU0"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_4_CPU1", + "type": "temp", + "inputs": ["Core_4_CPU1"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_5_CPU0", + "type": "temp", + "inputs": ["Core_5_CPU0"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + }, + { + "name": "Core_5_CPU1", + "type": "temp", + "inputs": ["Core_5_CPU1"], + "setpoint": 30.0, + "pid": { + "samplePeriod": 1.0, + "proportionalCoeff": -20.0, + "integralCoeff": -0.1, + "feedFwdOffsetCoeff": 0.0, + "feedFwdGainCoeff": 0.0, + "integralLimit_min": 0.0, + "integralLimit_max": 0.0, + "outLim_min": 0.0, + "outLim_max": 16000.0, + "slewNeg": 0.0, + "slewPos": 0.0, + "positiveHysteresis": 1.0, + "negativeHysteresis": 1.0 + } + } + ] + } + ] +} diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/fan-full-speed.sh b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/fan-full-speed.sh new file mode 100644 index 000000000..9a0d8e2e7 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/fan-full-speed.sh @@ -0,0 +1,3 @@ +#!bin/bash + +echo 255 > /sys/class/hwmon/*/pwm1 diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/fan-reboot-control.service b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/fan-reboot-control.service new file mode 100644 index 000000000..3ce2e01b0 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/fan-reboot-control.service @@ -0,0 +1,12 @@ +[Unit] +Description=Set Fan to Full Speed as Rebooting +DefaultDependencies=no +After=shutdown.target + +[Service] +Type=oneshot +RemainAfterExit=true +ExecStart=/usr/bin/fan-full-speed.sh + +[Install] +WantedBy=shutdown.target diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service new file mode 100644 index 000000000..57ae69c56 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control/phosphor-pid-control.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenBMC Fan Control Daemon + +[Service] +Type=simple +ExecStart=/usr/bin/swampd +Restart=always +RestartSec=5 +StartLimitInterval=0 +ExecStopPost=/usr/bin/fan-full-speed.sh + +[Install] +WantedBy=basic.target diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control_%.bbappend b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control_%.bbappend new file mode 100644 index 000000000..a61181dcb --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/fans/phosphor-pid-control_%.bbappend @@ -0,0 +1,29 @@ +FILESEXTRAPATHS_prepend_olympus-nuvoton := "${THISDIR}/${PN}:" + +SRC_URI_append_olympus-nuvoton = " file://config-olympus-nuvoton.json" +SRC_URI_append_olympus-nuvoton = " file://fan-full-speed.sh" +SRC_URI_append_olympus-nuvoton = " file://phosphor-pid-control.service" +SRC_URI_append_olympus-nuvoton = " file://fan-reboot-control.service" + +FILES_${PN}_append_olympus-nuvoton = " ${bindir}/fan-full-speed.sh" +FILES_${PN}_append_olympus-nuvoton = " ${datadir}/swampd/config.json" + +RDEPENDS_${PN} += "bash" + +SYSTEMD_SERVICE_${PN}_append_olympus-nuvoton = " phosphor-pid-control.service" +SYSTEMD_SERVICE_${PN}_append_olympus-nuvoton = " fan-reboot-control.service" + +do_install_append_olympus-nuvoton() { + install -d ${D}/${bindir} + install -m 0755 ${WORKDIR}/fan-full-speed.sh ${D}/${bindir} + + install -d ${D}${datadir}/swampd + install -m 0644 -D ${WORKDIR}/config-olympus-nuvoton.json \ + ${D}${datadir}/swampd/config.json + + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 ${WORKDIR}/phosphor-pid-control.service \ + ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/fan-reboot-control.service \ + ${D}${systemd_unitdir}/system +} diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/ipmb-olympus-channels.json b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/ipmb-olympus-channels.json new file mode 100644 index 000000000..45100bd1d --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/ipmb-olympus-channels.json @@ -0,0 +1,11 @@ +{ + "channels": [ + { + "type": "me", + "master-path": "/dev/i2c-5", + "slave-path": "/sys/bus/i2c/devices/5-1010/slave-mqueue", + "bmc-addr": 32, + "remote-addr": 44 + } + ] +} diff --git a/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend new file mode 100644 index 000000000..6feb2be84 --- /dev/null +++ b/meta-quanta/meta-olympus-nuvoton/recipes-phosphor/ipmi/phosphor-ipmi-ipmb_%.bbappend @@ -0,0 +1,11 @@ +FILESEXTRAPATHS_prepend_olympus-nuvoton := "${THISDIR}/${PN}:" + +SRC_URI_append_olympus-nuvoton = " file://ipmb-olympus-channels.json" +FILES_${PN}_append_olympus-nuvoton = " ${datadir}/ipmbbridge/ipmb-channels.json" + +do_install_append_olympus-nuvoton() { + install -d ${D}${datadir}/ipmbbridge + install -m 0644 -D ${WORKDIR}/ipmb-olympus-channels.json \ + ${D}${datadir}/ipmbbridge/ipmb-channels.json +} + |