Merge pull request #217 from williamspatrick/update-yocto-2.0.1
Update to yocto 2.0.1
diff --git a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/barreleye.cfg b/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/barreleye.cfg
deleted file mode 100644
index 086f191..0000000
--- a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/barreleye.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_PMBUS=y
-CONFIG_SENSORS_PMBUS=y
-CONFIG_SENSORS_ADM1275=y
diff --git a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/hwmon_adm1278.patch b/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/hwmon_adm1278.patch
deleted file mode 100644
index 074d39f..0000000
--- a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/hwmon_adm1278.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c
-index 188af4c..a45075d 100644
---- a/drivers/hwmon/pmbus/adm1275.c
-+++ b/drivers/hwmon/pmbus/adm1275.c
-@@ -24,7 +24,7 @@
- #include <linux/bitops.h>
- #include "pmbus.h"
-
--enum chips { adm1075, adm1275, adm1276, adm1293, adm1294 };
-+enum chips { adm1075, adm1275, adm1276, adm1278, adm1293, adm1294 };
-
- #define ADM1275_MFR_STATUS_IOUT_WARN2 BIT(0)
- #define ADM1293_MFR_STATUS_VAUX_UV_WARN BIT(5)
-@@ -70,6 +70,22 @@ enum chips { adm1075, adm1275, adm1276, adm1293, adm1294 };
- #define ADM1075_VAUX_OV_WARN BIT(7)
- #define ADM1075_VAUX_UV_WARN BIT(6)
-
-+#define ADM1278_PMON_CONTROL 0xd3
-+#define ADM1278_PMON_CONFIG 0xd4
-+#define ADM1278_CFG_TSFLT BIT(15)
-+#define ADM1278_CFG_SIMULTANEOUS BIT(14)
-+#define ADM1278_CFG_PMON_MODE BIT(4)
-+#define ADM1278_CFG_TEMP1_EN BIT(3)
-+#define ADM1278_CFG_VIN_EN BIT(2)
-+#define ADM1278_CFG_VOUT_EN BIT(1)
-+#define ADM1278_PEAK_TEMPERATURE 0xd7
-+
-+#define ADM1278_R_SENSE 1000 /* R_sense resistor value in microohmsi */
-+
-+static int r_sense = ADM1278_R_SENSE;
-+module_param(r_sense, int, 0644);
-+MODULE_PARM_DESC(r_sense, "Rsense resistor value in microohms");
-+
- struct adm1275_data {
- int id;
- bool have_oc_fault;
-@@ -186,6 +202,11 @@ static int adm1275_read_word_data(struct i2c_client *client, int page, int reg)
- case PMBUS_VIRT_READ_VIN_MAX:
- ret = pmbus_read_word_data(client, 0, ADM1275_PEAK_VIN);
- break;
-+ case PMBUS_VIRT_READ_TEMP_MAX:
-+ if (data->id != adm1278)
-+ return -ENODATA;
-+ ret = pmbus_read_word_data(client, 0, ADM1278_PEAK_TEMPERATURE);
-+ break;
- case PMBUS_VIRT_READ_PIN_MIN:
- if (!data->have_pin_min)
- return -ENXIO;
-@@ -199,6 +220,7 @@ static int adm1275_read_word_data(struct i2c_client *client, int page, int reg)
- case PMBUS_VIRT_RESET_IOUT_HISTORY:
- case PMBUS_VIRT_RESET_VOUT_HISTORY:
- case PMBUS_VIRT_RESET_VIN_HISTORY:
-+ case PMBUS_VIRT_RESET_TEMP_HISTORY:
- break;
- case PMBUS_VIRT_RESET_PIN_HISTORY:
- if (!data->have_pin_max)
-@@ -239,6 +261,9 @@ static int adm1275_write_word_data(struct i2c_client *client, int page, int reg,
- case PMBUS_VIRT_RESET_VIN_HISTORY:
- ret = pmbus_write_word_data(client, 0, ADM1275_PEAK_VIN, 0);
- break;
-+ case PMBUS_VIRT_RESET_TEMP_HISTORY:
-+ ret = pmbus_write_word_data(client, 0, ADM1278_PEAK_TEMPERATURE, 0);
-+ break;
- case PMBUS_VIRT_RESET_PIN_HISTORY:
- ret = pmbus_write_word_data(client, 0, ADM1276_PEAK_PIN, 0);
- if (!ret && data->have_pin_min)
-@@ -312,6 +337,7 @@ static const struct i2c_device_id adm1275_id[] = {
- { "adm1075", adm1075 },
- { "adm1275", adm1275 },
- { "adm1276", adm1276 },
-+ { "adm1278", adm1278 },
- { "adm1293", adm1293 },
- { "adm1294", adm1294 },
- { }
-@@ -335,6 +361,8 @@ static int adm1275_probe(struct i2c_client *client,
- | I2C_FUNC_SMBUS_BLOCK_DATA))
- return -ENODEV;
-
-+ /* i2c_aspeed driver does not handle i2c_smbus_read_block_data correctly */
-+#if 0
- ret = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, block_buffer);
- if (ret < 0) {
- dev_err(&client->dev, "Failed to read Manufacturer ID\n");
-@@ -363,6 +391,7 @@ static int adm1275_probe(struct i2c_client *client,
- dev_notice(&client->dev,
- "Device mismatch: Configured %s, detected %s\n",
- id->name, mid->name);
-+#endif
-
- config = i2c_smbus_read_byte_data(client, ADM1275_PMON_CONFIG);
- if (config < 0)
-@@ -377,7 +406,9 @@ static int adm1275_probe(struct i2c_client *client,
- if (!data)
- return -ENOMEM;
-
-- data->id = mid->driver_data;
-+ /* i2c_aspeed driver does not handle i2c_smbus_read_block_data correctly */
-+ //data->id = mid->driver_data;
-+ data->id = adm1278;
-
- info = &data->info;
-
-@@ -460,6 +491,62 @@ static int adm1275_probe(struct i2c_client *client,
- info->func[0] |=
- PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
- break;
-+ case adm1278:
-+ /* Configure monitoring */
-+ ret = i2c_smbus_write_byte_data(client,
-+ ADM1278_PMON_CONTROL, 0);
-+ if (ret < 0)
-+ return ret;
-+ ret = i2c_smbus_read_word_data(client, ADM1275_PMON_CONFIG);
-+ ret = i2c_smbus_write_word_data(client, ADM1275_PMON_CONFIG,
-+ ADM1278_CFG_PMON_MODE |
-+ ADM1278_CFG_TEMP1_EN |
-+ ADM1278_CFG_VIN_EN |
-+ ADM1278_CFG_VOUT_EN);
-+ if (ret < 0)
-+ return ret;
-+ ret = i2c_smbus_read_word_data(client, ADM1275_PMON_CONFIG);
-+ dev_info(&client->dev, "adm1278 config: 0x%x\n", ret);
-+ ret = i2c_smbus_write_byte_data(client, ADM1278_PMON_CONTROL,1);
-+ if (ret < 0)
-+ return ret;
-+
-+ info->func[0] |= PMBUS_HAVE_VIN
-+ | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
-+ | PMBUS_HAVE_PIN
-+ | PMBUS_HAVE_STATUS_INPUT
-+ | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
-+
-+ data->have_oc_fault = false;
-+ data->have_uc_fault = false;
-+ data->have_vout = true;
-+ data->have_vaux_status = false;
-+ data->have_mfr_vaux_status = false;
-+ data->have_iout_min = false;
-+ data->have_pin_min = false;
-+ data->have_pin_max = true;
-+
-+ info->m[PSC_VOLTAGE_IN] = 19599;
-+ info->b[PSC_VOLTAGE_IN] = 0;
-+ info->R[PSC_VOLTAGE_IN] = -2;
-+
-+ info->m[PSC_VOLTAGE_OUT] = 19599;
-+ info->b[PSC_VOLTAGE_OUT] = 0;
-+ info->R[PSC_VOLTAGE_OUT] = -2;
-+
-+ info->m[PSC_CURRENT_OUT] = 800 * r_sense / 1000;
-+ info->b[PSC_CURRENT_OUT] = 20475;
-+ info->R[PSC_CURRENT_OUT] = -1;
-+
-+ info->m[PSC_POWER] = 6123 * r_sense / 1000;
-+ info->b[PSC_POWER] = 0;
-+ info->R[PSC_POWER] = -2;
-+
-+ info->format[PSC_TEMPERATURE] = direct;
-+ info->m[PSC_TEMPERATURE] = 42;
-+ info->b[PSC_TEMPERATURE] = 31880;
-+ info->R[PSC_TEMPERATURE] = -1;
-+ break;
- case adm1293:
- case adm1294:
- data->have_iout_min = true;
diff --git a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/readme_adm1278.txt b/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/readme_adm1278.txt
deleted file mode 100644
index e86d977..0000000
--- a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc/readme_adm1278.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-README for adm1278 hwmon driver
-==================================
-Yi Li <shliyi@cn.ibm.com>
-
-
-This is a temporary kernel patch to enable hwmon driver for adm1278 chip on Barreleye.
-When this patch is merged into linux kernel, this patch will be removed from openbmc.
-
-The adm1278 driver is created according to datasheet:
-http://www.analog.com/media/en/technical-documentation/data-sheets/ADM1278.pdf
-
-The patch heavily re-used adm1278 enabling code from: https://github.com/facebook/openbmc/blob/master/meta-aspeed/recipes-kernel/linux/files/patch-2.6.28.9/0000-linux-openbmc.patch.
-
-This patch has been tested on barreleye, by following these steps:
-
-1) There are 3 adm1278 devices on Barreleye
-
-I2C5: P12v_a for CPU0
-I2C6: P12v_b for CPU1
-I2C7: P12v_c for HDD and IO Board
-
-2) adm1278 driver is based on adm1275.c, which depends on pmbus. This patch builds
-adm1275 and pmbus into kernel.
-
-3) When kernel booted, initialize the adm1278 devices:
-
-root@barreleye:~# echo adm1278 0x10 > /sys/class/i2c-adapter/i2c-4/new_device
-root@barreleye:~# echo adm1278 0x10 > /sys/class/i2c-adapter/i2c-5/new_device
-root@barreleye:~# echo adm1278 0x10 > /sys/class/i2c-adapter/i2c-6/new_device
-
-There will be three new hwmon sysfs entries created:
-
-root@barreleye:~# ls /sys/class/hwmon/hwmon3/
-curr1_highest in1_highest in1_reset_history in2_min_alarm power1_label temp1_input
-curr1_input in1_input in2_highest in2_reset_history power1_max temp1_max
-curr1_label in1_label in2_input name power1_reset_history temp1_max_alarm
-curr1_max in1_max in2_label power/ subsystem/ temp1_reset_history
-curr1_max_alarm in1_max_alarm in2_max power1_alarm temp1_crit uevent
-curr1_reset_history in1_min in2_max_alarm power1_input temp1_crit_alarm
-device/ in1_min_alarm in2_min power1_input_highest temp1_highest
-root@barreleye:~# ls /sys/class/hwmon/hwmon4/
-curr1_highest in1_highest in1_reset_history in2_min_alarm power1_label temp1_input
-curr1_input in1_input in2_highest in2_reset_history power1_max temp1_max
-curr1_label in1_label in2_input name power1_reset_history temp1_max_alarm
-curr1_max in1_max in2_label power/ subsystem/ temp1_reset_history
-curr1_max_alarm in1_max_alarm in2_max power1_alarm temp1_crit uevent
-curr1_reset_history in1_min in2_max_alarm power1_input temp1_crit_alarm
-device/ in1_min_alarm in2_min power1_input_highest temp1_highest
-root@barreleye:~# ls /sys/class/hwmon/hwmon5/
-curr1_highest in1_highest in1_reset_history in2_min_alarm power1_label temp1_input
-curr1_input in1_input in2_highest in2_reset_history power1_max temp1_max
-curr1_label in1_label in2_input name power1_reset_history temp1_max_alarm
-curr1_max in1_max in2_label power/ subsystem/ temp1_reset_history
-curr1_max_alarm in1_max_alarm in2_max power1_alarm temp1_crit uevent
-curr1_reset_history in1_min in2_max_alarm power1_input temp1_crit_alarm
-device/ in1_min_alarm in2_min power1_input_highest temp1_highest
-
-4) For details of what each hwmon sysfs attributes mean, please refer to:
-https://www.kernel.org/doc/Documentation/hwmon/pmbus
-For short, 'curr1_*' refers to 'IOUT', 'in1_*' refers to 'vin', 'in2_*' refers to 'vout', 'power1_*' refers to 'input power',
-'temp1_*' for 'temperature'.
-
-5) Remaining issue:
-
-5.1) Currently, i2c_aspeed driver does not handle "i2c_smbus_read_block_data()" correctly. So this patch has to bypass some detection code.
-We need to fix this issue when the patch is merged to kernel.
-5.2) According to adm1278 datasheet, there is a sense resistor used to measure power and current. The resistor will affect conversion between
-adm1278 register value to real-world value for current and power. I am not very sure about the resistor value. So using 1 mili-ohms (or 1000 micro-ohms) as default value. When build the adm1275 driver as kernel module, we can set this resistor value by:
-
-# insmod adm1275.ko r_sense=500
-
-This will set the 'sense resistor' to 500 micro-ohms.
-5.3) Some of the sensor value, e.g, 'temp1_input' seems not reasonable, e.g:
-
-root@barreleye:~# cat /sys/class/hwmon/hwmon4/temp1_input
--270952
-
-Need further check on that.
diff --git a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc_%.bbappend b/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc_%.bbappend
deleted file mode 100644
index b6e8e16..0000000
--- a/meta-openbmc-machines/meta-openpower/meta-rackspace/meta-barreleye/recipes-kernel/linux/linux-obmc_%.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux-obmc:"
-SRC_URI += "file://barreleye.cfg"
-SRC_URI += "file://hwmon_adm1278.patch"
diff --git a/meta-phosphor/classes/obmc-phosphor-image.bbclass b/meta-phosphor/classes/obmc-phosphor-image.bbclass
index 164da33..ce54777 100644
--- a/meta-phosphor/classes/obmc-phosphor-image.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-image.bbclass
@@ -42,6 +42,7 @@
i2c-tools \
screen \
inarp \
+ obmc-console \
"
def build_overlay(d):
diff --git a/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.3.bb b/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.3.bb
deleted file mode 100644
index 3e74f7c..0000000
--- a/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.3.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "Linux kernel for OpenBMC"
-SECTION = "kernel"
-LICENSE = "GPLv2"
-
-KBRANCH ?= "dev-4.3"
-KCONFIG_MODE="--alldefconfig"
-
-SRC_URI = "git://github.com/openbmc/linux;protocol=git;branch=${KBRANCH}"
-
-LINUX_VERSION ?= "4.3"
-LINUX_VERSION_EXTENSION ?= "-${SRCREV}"
-
-SRCREV="openbmc-20160222-1"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-COMPATIBLE_MACHINE_${MACHINE} = "openbmc"
-
-inherit kernel
-require recipes-kernel/linux/linux-yocto.inc
-
-do_patch_append() {
- for DTB in "${KERNEL_DEVICETREE}"; do
- DT=`basename ${DTB} .dtb`
- if [ -r "${WORKDIR}/${DT}.dts" ]; then
- cp ${WORKDIR}/${DT}.dts \
- ${STAGING_KERNEL_DIR}/arch/${ARCH}/boot/dts
- fi
- done
-}
diff --git a/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.4.bb b/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.4.bb
new file mode 100644
index 0000000..2e2c9ce
--- /dev/null
+++ b/meta-phosphor/common/recipes-kernel/linux/linux-obmc_4.4.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Linux kernel for OpenBMC"
+SECTION = "kernel"
+LICENSE = "GPLv2"
+
+KBRANCH ?= "dev-4.4"
+KCONFIG_MODE="--alldefconfig"
+
+SRC_URI = "git://github.com/openbmc/linux;protocol=git;branch=${KBRANCH}"
+
+LINUX_VERSION ?= "4.4"
+LINUX_VERSION_EXTENSION ?= "-${SRCREV}"
+
+SRCREV="openbmc-20160329-2"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+COMPATIBLE_MACHINE_${MACHINE} = "openbmc"
+
+inherit kernel
+require recipes-kernel/linux/linux-yocto.inc
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console.bb b/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console.bb
new file mode 100644
index 0000000..6fe3bde
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console.bb
@@ -0,0 +1,21 @@
+SUMMARY = "OpenBMC console daemon"
+DESCRIPTION = "Daemon to handle UART console connections"
+HOMEPAGE = "http://github.com/openbmc/obmc-console"
+PR = "r1"
+
+inherit obmc-phosphor-license
+inherit obmc-phosphor-systemd
+inherit autotools
+
+TARGET_CFLAGS += "-fpic -O2"
+
+SRC_URI += "git://github.com/openbmc/obmc-console"
+SRC_URI += "file://${PN}.conf"
+SRCREV = "54e9569d14b127806e45e1c17ec4a1f5f7271d3f"
+
+do_install_append() {
+ install -m 0755 -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/${PN}.conf ${D}${sysconfdir}/${PN}.conf
+}
+
+S = "${WORKDIR}/git"
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console/obmc-console.conf b/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console/obmc-console.conf
new file mode 100644
index 0000000..d324efc
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console/obmc-console.conf
@@ -0,0 +1,3 @@
+device = ttyS5
+lpc-address = 0x3f8
+sirq = 4
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console/obmc-console.service b/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console/obmc-console.service
new file mode 100644
index 0000000..4e08541
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/obmc-console/obmc-console/obmc-console.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=OpenBMC console daemon
+
+[Service]
+ExecStart=/usr/sbin/obmc-console-server
+Restart=always
+
+[Install]
+WantedBy=multi-user.target