From 4bbd27e7f357b58cf9637f040c67e328e62d086b Mon Sep 17 00:00:00 2001 From: Zi Zhou Date: Thu, 16 Feb 2017 23:41:11 -0800 Subject: [PATCH 1/4] ly2 kernel module and onlp driver update for kernel 3.16 --- .../powerpc-quanta-ly2/modules/PKG.yml | 2 +- .../modules/builds/Makefile | 6 + .../modules/builds/quanta-ly-hwmon.c | 297 +++++++++++++++ .../modules/builds/quanta-ly2-i2c-mux.c | 355 ++++++++++++++++++ .../src/module/src/powerpc_quanta_ly2_int.h | 2 +- .../onlp/builds/src/module/src/psui.c | 4 +- .../onlp/builds/src/module/src/sfpi.c | 104 ++--- .../onlp/builds/src/module/src/sysi.c | 2 +- .../python/powerpc_quanta_ly2_r0/__init__.py | 4 +- 9 files changed, 718 insertions(+), 58 deletions(-) create mode 100644 packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/Makefile create mode 100644 packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly-hwmon.c create mode 100644 packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly2-i2c-mux.c diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/PKG.yml b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/PKG.yml index 33fe0277..9f0b09f5 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/PKG.yml +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/PKG.yml @@ -1 +1 @@ -!include $ONL_TEMPLATES/no-platform-modules.yml ARCH=powerpc VENDOR=quanta BASENAME=powerpc-quanta-ly2 +!include $ONL_TEMPLATES/platform-modules.yml ARCH=powerpc VENDOR=quanta BASENAME=powerpc-quanta-ly2 KERNELS="onl-kernel-3.16-lts-powerpc-e500v-all:powerpc" diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/Makefile b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/Makefile new file mode 100644 index 00000000..c17f6468 --- /dev/null +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/Makefile @@ -0,0 +1,6 @@ +KERNELS := onl-kernel-3.16-lts-powerpc-e500v-all:powerpc +KMODULES := $(wildcard *.c) +VENDOR := quanta +BASENAME := powerpc-quanta-ly2 +ARCH := powerpc +include $(ONL)/make/kmodule.mk diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly-hwmon.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly-hwmon.c new file mode 100644 index 00000000..63466a17 --- /dev/null +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly-hwmon.c @@ -0,0 +1,297 @@ +/* + * + * + * Copyright 2013, 2014 BigSwitch Networks, Inc. + * + * This program is free software; you can redistribute it + * and/or modify it under the terms ofthe GNU General Public License as + * published by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * + * + * + * A hwmon driver for the Quanta LYx + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static const unsigned short normal_i2c[] = { 0x2C, 0x2E, 0x2F, I2C_CLIENT_END }; + +#define QUANTA_LY_HWMON_REG_TEMP_INPUT_BASE 0x30 +#define QUANTA_LY_HWMON_REG_FAN_MODE 0x55 +#define QUANTA_LY_HWMON_REG_FAN_DIR 0x56 +#define QUANTA_LY_HWMON_REG_FAN_PWM_BASE 0x60 +#define QUANTA_LY_HWMON_REG_FAN_INPUT_BASE 0x80 + +#define QUANTA_LY_HWMON_FAN_MANUAL_MODE 1 +#define QUANTA_LY_HWMON_FAN_AUTO_MODE 2 + +#define QUANTA_LY_HWMON_NUM_FANS 8 + +struct quanta_ly_hwmon_data { + struct device *hwmon_dev; + struct attribute_group attrs; + struct mutex lock; +}; + +static int quanta_ly_hwmon_probe(struct i2c_client *client, + const struct i2c_device_id *id); +static int quanta_ly_hwmon_remove(struct i2c_client *client); + +static const struct i2c_device_id quanta_ly_hwmon_id[] = { + { "quanta_ly_hwmon", 0 }, + { } +}; +MODULE_DEVICE_TABLE(i2c, quanta_ly_hwmon_id); + +static struct i2c_driver quanta_ly_hwmon_driver = { + .class = I2C_CLASS_HWMON, + .driver = { + .name = "quanta_ly_hwmon", + }, + .probe = quanta_ly_hwmon_probe, + .remove = quanta_ly_hwmon_remove, + .id_table = quanta_ly_hwmon_id, + .address_list = normal_i2c, +}; + +static ssize_t show_temp(struct device *dev, struct device_attribute *devattr, + char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + struct i2c_client *client = to_i2c_client(dev); + struct quanta_ly_hwmon_data *data = i2c_get_clientdata(client); + int temp; + + mutex_lock(&data->lock); + temp = i2c_smbus_read_byte_data(client, + QUANTA_LY_HWMON_REG_TEMP_INPUT_BASE + + attr->index); + mutex_unlock(&data->lock); + return sprintf(buf, "%d\n", 1000 * temp); +} + +static ssize_t show_fan(struct device *dev, struct device_attribute *devattr, + char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + struct i2c_client *client = to_i2c_client(dev); + struct quanta_ly_hwmon_data *data = i2c_get_clientdata(client); + int fan; + + mutex_lock(&data->lock); + fan = i2c_smbus_read_word_swapped(client, + QUANTA_LY_HWMON_REG_FAN_INPUT_BASE + + 2 * attr->index); + mutex_unlock(&data->lock); + return sprintf(buf, "%d\n", fan); +} + +static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr, + char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + struct i2c_client *client = to_i2c_client(dev); + struct quanta_ly_hwmon_data *data = i2c_get_clientdata(client); + int pwm; + + mutex_lock(&data->lock); + pwm = i2c_smbus_read_word_swapped(client, + QUANTA_LY_HWMON_REG_FAN_PWM_BASE + + 2 * attr->index); + mutex_unlock(&data->lock); + return sprintf(buf, "%d\n", pwm * 255 / 10000); +} + +static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr, + const char *buf, size_t count) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + struct i2c_client *client = to_i2c_client(dev); + struct quanta_ly_hwmon_data *data = i2c_get_clientdata(client); + long val; + int ret; + + ret = kstrtol(buf, 10, &val); + if (ret) + return ret; + mutex_lock(&data->lock); + i2c_smbus_write_word_swapped(client, + QUANTA_LY_HWMON_REG_FAN_PWM_BASE + + 2 * attr->index, val * 10000 / 255); + mutex_unlock(&data->lock); + return count; +} + +static ssize_t show_fan_dir(struct device *dev, + struct device_attribute *devattr, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct quanta_ly_hwmon_data *data = i2c_get_clientdata(client); + + int f2b = 0; + int b2f = 0; + int i; + + mutex_lock(&data->lock); + for(i = 0; i < 4; i++) { + f2b += i2c_smbus_read_word_swapped(client, + QUANTA_LY_HWMON_REG_FAN_INPUT_BASE + + 2 * i); + } + for(i = 4; i < 8; i++) { + b2f += i2c_smbus_read_word_swapped(client, + QUANTA_LY_HWMON_REG_FAN_INPUT_BASE + + 2 * i); + } + + mutex_unlock(&data->lock); + if(f2b) { + return sprintf(buf, "front-to-back"); + } + if(b2f) { + return sprintf(buf, "back-to-front"); + } + return sprintf(buf, "unknown"); +} + +static ssize_t set_fan_dir(struct device *dev, + struct device_attribute *devattr, const char *buf, + size_t count) +{ + struct i2c_client *client = to_i2c_client(dev); + struct quanta_ly_hwmon_data *data = i2c_get_clientdata(client); + int dir; + + if (!strncmp(buf, "normal", 6)) + dir = 0; + else if (!strncmp(buf, "reverse", 7)) + dir = 1; + else + return -EINVAL; + + mutex_lock(&data->lock); + i2c_smbus_write_byte_data(client, + QUANTA_LY_HWMON_REG_FAN_DIR, dir); + mutex_unlock(&data->lock); + return count; +} + +static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL, 0); +static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp, NULL, 1); +static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp, NULL, 2); +static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp, NULL, 3); +static SENSOR_DEVICE_ATTR(temp5_input, S_IRUGO, show_temp, NULL, 4); +static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO, show_fan, NULL, 0); +static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO, show_fan, NULL, 1); +static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO, show_fan, NULL, 2); +static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO, show_fan, NULL, 3); +static SENSOR_DEVICE_ATTR(fan5_input, S_IRUGO, show_fan, NULL, 4); +static SENSOR_DEVICE_ATTR(fan6_input, S_IRUGO, show_fan, NULL, 5); +static SENSOR_DEVICE_ATTR(fan7_input, S_IRUGO, show_fan, NULL, 6); +static SENSOR_DEVICE_ATTR(fan8_input, S_IRUGO, show_fan, NULL, 7); +static SENSOR_DEVICE_ATTR(pwm1, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 0); +static SENSOR_DEVICE_ATTR(pwm2, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 1); +static SENSOR_DEVICE_ATTR(pwm3, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 2); +static SENSOR_DEVICE_ATTR(pwm4, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 3); +static SENSOR_DEVICE_ATTR(pwm5, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 4); +static SENSOR_DEVICE_ATTR(pwm6, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 5); +static SENSOR_DEVICE_ATTR(pwm7, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 6); +static SENSOR_DEVICE_ATTR(pwm8, S_IWUSR | S_IRUGO, show_pwm, set_pwm, 7); +static SENSOR_DEVICE_ATTR(fan_dir, S_IWUSR | S_IRUGO, show_fan_dir, + set_fan_dir, 0); + +static struct attribute *quanta_ly_hwmon_attr[] = { + &sensor_dev_attr_temp1_input.dev_attr.attr, + &sensor_dev_attr_temp2_input.dev_attr.attr, + &sensor_dev_attr_temp3_input.dev_attr.attr, + &sensor_dev_attr_temp4_input.dev_attr.attr, + &sensor_dev_attr_temp5_input.dev_attr.attr, + &sensor_dev_attr_fan1_input.dev_attr.attr, + &sensor_dev_attr_fan2_input.dev_attr.attr, + &sensor_dev_attr_fan3_input.dev_attr.attr, + &sensor_dev_attr_fan4_input.dev_attr.attr, + &sensor_dev_attr_fan5_input.dev_attr.attr, + &sensor_dev_attr_fan6_input.dev_attr.attr, + &sensor_dev_attr_fan7_input.dev_attr.attr, + &sensor_dev_attr_fan8_input.dev_attr.attr, + &sensor_dev_attr_pwm1.dev_attr.attr, + &sensor_dev_attr_pwm2.dev_attr.attr, + &sensor_dev_attr_pwm3.dev_attr.attr, + &sensor_dev_attr_pwm4.dev_attr.attr, + &sensor_dev_attr_pwm5.dev_attr.attr, + &sensor_dev_attr_pwm6.dev_attr.attr, + &sensor_dev_attr_pwm7.dev_attr.attr, + &sensor_dev_attr_pwm8.dev_attr.attr, + &sensor_dev_attr_fan_dir.dev_attr.attr, + NULL +}; + +static int quanta_ly_hwmon_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct quanta_ly_hwmon_data *data; + int err; + int i; + + data = devm_kzalloc(&client->dev, sizeof(struct quanta_ly_hwmon_data), + GFP_KERNEL); + if (!data) + return -ENOMEM; + + i2c_set_clientdata(client, data); + mutex_init(&data->lock); + + dev_info(&client->dev, "%s chip found\n", client->name); + + data->attrs.attrs = quanta_ly_hwmon_attr; + err = sysfs_create_group(&client->dev.kobj, &data->attrs); + if (err) + return err; + + data->hwmon_dev = hwmon_device_register(&client->dev); + if (IS_ERR(data->hwmon_dev)) { + err = PTR_ERR(data->hwmon_dev); + goto exit_remove; + } + + i2c_smbus_write_byte_data(client, + QUANTA_LY_HWMON_REG_FAN_MODE, + QUANTA_LY_HWMON_FAN_MANUAL_MODE); + for (i = 0; i < QUANTA_LY_HWMON_NUM_FANS; i++) { + u8 cmd = QUANTA_LY_HWMON_REG_FAN_PWM_BASE + i * 2; + i2c_smbus_write_word_swapped(client, cmd, 10000); + } + + return 0; + +exit_remove: + sysfs_remove_group(&client->dev.kobj, &data->attrs); + return err; +} + +static int quanta_ly_hwmon_remove(struct i2c_client *client) +{ + struct quanta_ly_hwmon_data *data = i2c_get_clientdata(client); + + hwmon_device_unregister(data->hwmon_dev); + sysfs_remove_group(&client->dev.kobj, &data->attrs); + return 0; +} + +module_i2c_driver(quanta_ly_hwmon_driver); + +MODULE_AUTHOR("Big Switch Networks "); +MODULE_DESCRIPTION("Quanta LYx hardware monitor driver"); +MODULE_LICENSE("GPL"); diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly2-i2c-mux.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly2-i2c-mux.c new file mode 100644 index 00000000..f1700c96 --- /dev/null +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/modules/builds/quanta-ly2-i2c-mux.c @@ -0,0 +1,355 @@ +/* + * + * + * Copyright 2013, 2014 BigSwitch Networks, Inc. + * + * This program is free software; you can redistribute it + * and/or modify it under the terms ofthe GNU General Public License as + * published by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. + * + * + * + * + * An I2C multiplexer driver for the Quanta LY2 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define QUANTA_LY2_I2C_MUX_CHANNEL_FIRST 1 + +#define QUANTA_LY2_I2C_MUX_NUM_CHANNELS 16 + +/* + * 16 read GPIOs, 8 write GPIOs, + * treat them as a single GPIO chip, + * with the read GPIOs occurring first + */ +#define QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS 16 +#define QUANTA_LY2_I2C_MUX_NUM_WRITE_GPIOS 8 + +#define QUANTA_LY2_I2C_MUX_CMD_GET_GPIO 0 +#define QUANTA_LY2_I2C_MUX_CMD_SET_GPIO 1 +#define QUANTA_LY2_I2C_MUX_CMD_SET_CHANNEL 2 + +struct quanta_ly2_i2c_mux { + struct i2c_client *client; + struct i2c_adapter *chan_adap[QUANTA_LY2_I2C_MUX_NUM_CHANNELS]; + struct gpio_chip gpio_chip; + u8 last_chan; + u8 gpio_write_val; +}; + +static const struct i2c_device_id quanta_ly2_i2c_mux_id[] = { + {"quanta_ly_i2c_mux", 0}, + {"quanta_ly2_i2c_mux", 0}, + {} +}; + +MODULE_DEVICE_TABLE(i2c, quanta_ly2_i2c_mux_id); + +/* + * pld.c does 3-byte transactions, but none of the GPIO + * definitions require more than 16 bits + */ +static int quanta_ly2_i2c_mux_reg_read(struct i2c_adapter *adap, + struct i2c_client *client, + u8 command, u16 *val) +{ + int ret = -ENODEV; + + if (adap->algo->master_xfer) { + struct i2c_msg msg[2]; + char buf[4]; + + msg[0].addr = client->addr; + msg[0].flags = 0; + msg[0].len = 1; + buf[0] = command; + msg[0].buf = &buf[0]; + + /* always receive 3 bytes, else the PLD freaks out */ + msg[1].addr = client->addr; + msg[1].flags = I2C_M_RD; + msg[1].len = 3; + msg[1].buf = &buf[1]; + + ret = adap->algo->master_xfer(adap, msg, 2); + if (val != NULL && ret > -1) + *val = ((buf[2] << 8) | buf[1]); + } else { + union i2c_smbus_data data; + data.block[0] = 3; /* block transfer length */ + ret = adap->algo->smbus_xfer(adap, client->addr, + client->flags, + I2C_SMBUS_READ, + command, + I2C_SMBUS_I2C_BLOCK_DATA, &data); + if (val != NULL) + *val = ((data.block[2] << 8) | data.block[1]); + } + + return ret; +} + +/* + * pld.c shows 3-byte output transactions; + * in our case we only need 8 bits to + * (1) select one of the 16 muxed i2c devices, + * (2) drive one of the 8 defined GPIO outputs + */ +static int quanta_ly2_i2c_mux_reg_write(struct i2c_adapter *adap, + struct i2c_client *client, + u8 command, u8 val) +{ + int ret = -ENODEV; + + if (adap->algo->master_xfer) { + struct i2c_msg msg; + char buf[4]; + + msg.addr = client->addr; + msg.flags = 0; + msg.len = 3; + buf[0] = command; + buf[1] = val; + buf[2] = 0; + buf[3] = 0; + msg.buf = buf; + ret = adap->algo->master_xfer(adap, &msg, 1); + } else { + union i2c_smbus_data data; + + data.block[0] = 3; + data.block[1] = val; + data.block[2] = 0; + data.block[3] = 0; + + ret = adap->algo->smbus_xfer(adap, client->addr, + client->flags, + I2C_SMBUS_WRITE, + command, + I2C_SMBUS_I2C_BLOCK_DATA, &data); + } + + return ret; +} + +static void quanta_ly2_i2c_mux_gpio_set(struct gpio_chip *gc, unsigned offset, + int val) +{ + struct quanta_ly2_i2c_mux *data = container_of( + gc, struct quanta_ly2_i2c_mux, gpio_chip); + + /* ignore write attempts to input GPIOs */ + if (offset < QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS) { + dev_warn(&data->client->dev, + "ignoring GPIO write for input for pin %d\n", + offset); + return; + } + offset -= QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS; + + if (val) + data->gpio_write_val |= (1 << offset); + else + data->gpio_write_val &= ~(1 << offset); + + quanta_ly2_i2c_mux_reg_write( + data->client->adapter, data->client, + QUANTA_LY2_I2C_MUX_CMD_SET_GPIO, + data->gpio_write_val); +} + +/* + * "read" one of the GPIOs. + * The first 16 (QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS) + * are actual input GPIOs. + * the last 8 (QUANTA_LY2_I2C_MUX_NUM_WRITE_GPIOS) + * are output GPIOs, so readback just returns the cached value. + */ +static int quanta_ly2_i2c_mux_gpio_get(struct gpio_chip *gc, unsigned offset) +{ + int ret; + u16 buf; + struct quanta_ly2_i2c_mux *data = container_of( + gc, struct quanta_ly2_i2c_mux, gpio_chip); + + if (offset >= QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS) { + offset -= QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS; + return (data->gpio_write_val & (1 << offset)) ? 1 : 0; + } + + /* else, do a proper gpio read */ + buf = 0; + ret = quanta_ly2_i2c_mux_reg_read(data->client->adapter, + data->client, + QUANTA_LY2_I2C_MUX_CMD_GET_GPIO, + &buf); + if (ret < 0) { + dev_err(&data->client->dev, + "quanta_ly2_i2c_mux_reg_read failed\n"); + return 0; + } + return (buf & (1 << offset)) ? 1 : 0; +} + +static int quanta_ly2_i2c_mux_select_chan(struct i2c_adapter *adap, + void *client, u32 chan) +{ + struct quanta_ly2_i2c_mux *data = i2c_get_clientdata(client); + int ret = 0; + u32 c = QUANTA_LY2_I2C_MUX_CHANNEL_FIRST + chan; + + if (data->last_chan != c) { + ret = quanta_ly2_i2c_mux_reg_write( + adap, client, + QUANTA_LY2_I2C_MUX_CMD_SET_CHANNEL, c); + data->last_chan = c; + } + + return ret; +} + +static int quanta_ly2_i2c_mux_release_chan(struct i2c_adapter *adap, + void *client, u32 chan) +{ + struct quanta_ly2_i2c_mux *data = i2c_get_clientdata(client); + int ret = 0; + + ret = quanta_ly2_i2c_mux_reg_write( + adap, client, + QUANTA_LY2_I2C_MUX_CMD_SET_CHANNEL, 0); + data->last_chan = 0; + + return ret; +} + +static struct gpio_chip quanta_ly2_i2c_mux_gpio_chip = { + .label = "quanta_ly2_i2c_mux_gpio_chip", + .owner = THIS_MODULE, + .ngpio = QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS + QUANTA_LY2_I2C_MUX_NUM_WRITE_GPIOS, + .base = -1, + .set = quanta_ly2_i2c_mux_gpio_set, + .get = quanta_ly2_i2c_mux_gpio_get, +}; + +static int quanta_ly2_i2c_mux_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct i2c_adapter *adap = client->adapter; + int chan; + struct quanta_ly2_i2c_mux *data; + int ret = -ENODEV; + + if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_BYTE_DATA)) + goto err; + + data = kzalloc(sizeof(struct quanta_ly2_i2c_mux), GFP_KERNEL); + if (!data) { + ret = -ENOMEM; + goto err; + } + + i2c_set_clientdata(client, data); + data->client = client; + + if (i2c_smbus_write_byte(client, 0) < 0) { + dev_warn(&client->dev, "probe failed\n"); + goto exit_free; + } + + i2c_lock_adapter(adap); + quanta_ly2_i2c_mux_release_chan(adap, client, 0); + i2c_unlock_adapter(adap); + + for (chan = 0; chan < QUANTA_LY2_I2C_MUX_NUM_CHANNELS; chan++) { + data->chan_adap[chan] = + i2c_add_mux_adapter(adap, &client->dev, client, + 0, chan, 0, + quanta_ly2_i2c_mux_select_chan, + quanta_ly2_i2c_mux_release_chan); + + if (data->chan_adap[chan] == NULL) { + ret = -ENODEV; + dev_err(&client->dev, + "failed to register multiplexed adapter %d\n", + chan); + goto adap_reg_failed; + } + } + + dev_info(&client->dev, + "registered %d multiplexed buses for I2C mux %s\n", + chan, client->name); + + data->gpio_chip = quanta_ly2_i2c_mux_gpio_chip; + data->gpio_chip.dev = &client->dev; + data->gpio_write_val = 0xff; + + ret = gpiochip_add(&data->gpio_chip); + if (ret) { + dev_err(&client->dev, "failed to register GPIOs\n"); + goto adap_reg_failed; + } + + dev_info(&client->dev, + "registered GPIOs for I2C mux %s (%d read, %d write)\n", + client->name, + QUANTA_LY2_I2C_MUX_NUM_READ_GPIOS, + QUANTA_LY2_I2C_MUX_NUM_WRITE_GPIOS); + + return 0; + +adap_reg_failed: + for (chan--; chan >= 0; chan--) + i2c_del_mux_adapter(data->chan_adap[chan]); + +exit_free: + kfree(data); +err: + return ret; +} + +static int quanta_ly2_i2c_mux_remove(struct i2c_client *client) +{ + struct quanta_ly2_i2c_mux *data = i2c_get_clientdata(client); + int chan, ret; + + for (chan = 0; chan < QUANTA_LY2_I2C_MUX_NUM_CHANNELS; chan++) + if (data->chan_adap[chan]) { + i2c_del_mux_adapter(data->chan_adap[chan]); + data->chan_adap[chan] = NULL; + } + + ret = gpiochip_remove(&data->gpio_chip); + if (ret) + return ret; + + kfree(data); + return 0; +} + +static struct i2c_driver quanta_ly2_i2c_mux_driver = { + .driver = { + .name = "quanta_ly2_i2c_mux", + .owner = THIS_MODULE, + }, + .probe = quanta_ly2_i2c_mux_probe, + .remove = quanta_ly2_i2c_mux_remove, + .id_table = quanta_ly2_i2c_mux_id, +}; + +module_i2c_driver(quanta_ly2_i2c_mux_driver); + +MODULE_AUTHOR("Big Switch Networks "); +MODULE_DESCRIPTION("Quanta LY2 I2C multiplexer driver"); +MODULE_LICENSE("GPL"); diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/powerpc_quanta_ly2_int.h b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/powerpc_quanta_ly2_int.h index fbe22afa..3e535915 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/powerpc_quanta_ly2_int.h +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/powerpc_quanta_ly2_int.h @@ -199,6 +199,6 @@ extern aim_map_si_t fan_oid_desc_map[]; /* */ -#define SYS_HWMON_PREFIX "/sys/devices/soc.0/ffe03000.i2c/i2c-0/i2c-4/4-002e" +#define SYS_HWMON_PREFIX "/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-4/4-002e" #endif /* __POWERPC_QUANTA_LY2_R0_INT_H__ */ diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c index 8456e4a2..95bf0114 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c @@ -50,8 +50,8 @@ static onlp_psu_info_t psus__[] = { char* psu_paths[] = { NULL, /* Not used */ - "/sys/devices/soc.0/ffe03000.i2c/i2c-0/i2c-6/6-0058", - "/sys/devices/soc.0/ffe03000.i2c/i2c-0/i2c-7/7-0059", + "/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-6/6-0058/hwmon/hwmon0", + "/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-7/7-0059/hwmon/hwmon1", }; int diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c index e1877b7e..c2580b6e 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c @@ -44,58 +44,58 @@ typedef struct sfpmap_s { static sfpmap_t sfpmap__[] = { - { 1, "/sys/class/gpio/gpio168/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-14/14-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-14/14-0051/eeprom" }, - { 2, "/sys/class/gpio/gpio169/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-15/15-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-15/15-0051/eeprom" }, - { 3, "/sys/class/gpio/gpio170/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-16/16-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-16/16-0051/eeprom" }, - { 4, "/sys/class/gpio/gpio171/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-17/17-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-17/17-0051/eeprom" }, - { 5, "/sys/class/gpio/gpio172/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-18/18-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-18/18-0051/eeprom" }, - { 6, "/sys/class/gpio/gpio173/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-19/19-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-19/19-0051/eeprom" }, - { 7, "/sys/class/gpio/gpio174/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-20/20-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-20/20-0051/eeprom" }, - { 8, "/sys/class/gpio/gpio175/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-21/21-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-21/21-0051/eeprom" }, - { 9, "/sys/class/gpio/gpio176/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-22/22-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-22/22-0051/eeprom" }, - { 10, "/sys/class/gpio/gpio177/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-23/23-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-23/23-0051/eeprom" }, - { 11, "/sys/class/gpio/gpio178/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-24/24-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-24/24-0051/eeprom" }, - { 12, "/sys/class/gpio/gpio179/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-25/25-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-25/25-0051/eeprom" }, - { 13, "/sys/class/gpio/gpio180/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-26/26-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-26/26-0051/eeprom" }, - { 14, "/sys/class/gpio/gpio181/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-27/27-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-27/27-0051/eeprom" }, - { 15, "/sys/class/gpio/gpio182/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-28/28-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-28/28-0051/eeprom" }, - { 16, "/sys/class/gpio/gpio183/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-29/29-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-29/29-0051/eeprom" }, - { 17, "/sys/class/gpio/gpio144/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-30/30-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-30/30-0051/eeprom" }, - { 18, "/sys/class/gpio/gpio145/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-31/31-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-31/31-0051/eeprom" }, - { 19, "/sys/class/gpio/gpio146/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-32/32-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-32/32-0051/eeprom" }, - { 20, "/sys/class/gpio/gpio147/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-33/33-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-33/33-0051/eeprom" }, - { 21, "/sys/class/gpio/gpio148/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-34/34-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-34/34-0051/eeprom" }, - { 22, "/sys/class/gpio/gpio149/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-35/35-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-35/35-0051/eeprom" }, - { 23, "/sys/class/gpio/gpio150/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-36/36-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-35/35-0051/eeprom" }, - { 24, "/sys/class/gpio/gpio151/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-37/37-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-37/37-0051/eeprom" }, - { 25, "/sys/class/gpio/gpio152/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-38/38-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-38/38-0051/eeprom" }, - { 26, "/sys/class/gpio/gpio153/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-39/39-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-39/39-0051/eeprom" }, - { 27, "/sys/class/gpio/gpio154/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-40/40-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-40/40-0051/eeprom" }, - { 28, "/sys/class/gpio/gpio155/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-41/41-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-41/41-0051/eeprom" }, - { 29, "/sys/class/gpio/gpio156/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-42/42-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-42/42-0051/eeprom" }, - { 30, "/sys/class/gpio/gpio157/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-43/43-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-43/43-0051/eeprom" }, - { 31, "/sys/class/gpio/gpio158/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-44/44-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-44/44-0051/eeprom" }, - { 32, "/sys/class/gpio/gpio159/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-45/45-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-45/45-0051/eeprom" }, - { 33, "/sys/class/gpio/gpio120/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-46/46-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-46/46-0051/eeprom" }, - { 34, "/sys/class/gpio/gpio121/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-47/47-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-47/47-0051/eeprom" }, - { 35, "/sys/class/gpio/gpio122/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-48/48-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-48/48-0051/eeprom" }, - { 36, "/sys/class/gpio/gpio123/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-49/49-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-49/49-0051/eeprom" }, - { 37, "/sys/class/gpio/gpio124/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-50/50-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-50/50-0051/eeprom" }, - { 38, "/sys/class/gpio/gpio125/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-51/51-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-51/51-0051/eeprom" }, - { 39, "/sys/class/gpio/gpio126/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-52/52-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-52/52-0051/eeprom" }, - { 40, "/sys/class/gpio/gpio127/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-53/53-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-53/53-0051/eeprom" }, - { 41, "/sys/class/gpio/gpio128/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-54/54-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-54/54-0051/eeprom" }, - { 42, "/sys/class/gpio/gpio129/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-55/55-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-55/55-0051/eeprom" }, - { 43, "/sys/class/gpio/gpio130/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-56/56-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-56/56-0051/eeprom" }, - { 44, "/sys/class/gpio/gpio131/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-57/57-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-57/57-0051/eeprom" }, - { 45, "/sys/class/gpio/gpio132/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-58/58-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-58/58-0051/eeprom" }, - { 46, "/sys/class/gpio/gpio133/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-59/59-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-59/59-0051/eeprom" }, - { 47, "/sys/class/gpio/gpio134/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-60/60-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-60/60-0051/eeprom" }, - { 48, "/sys/class/gpio/gpio135/value", NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-61/61-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-61/61-0051/eeprom" }, - { 49, NULL, NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-10/10-0050/eeprom", NULL }, - { 50, NULL, NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-11/11-0050/eeprom", NULL }, - { 51, NULL, NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-12/12-0050/eeprom", NULL }, - { 52, NULL, NULL, "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-13/13-0050/eeprom", NULL }, + { 1, "/sys/class/gpio/gpio168/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-14/14-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-14/14-0051/eeprom" }, + { 2, "/sys/class/gpio/gpio169/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-15/15-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-15/15-0051/eeprom" }, + { 3, "/sys/class/gpio/gpio170/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-16/16-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-16/16-0051/eeprom" }, + { 4, "/sys/class/gpio/gpio171/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-17/17-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-17/17-0051/eeprom" }, + { 5, "/sys/class/gpio/gpio172/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-18/18-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-18/18-0051/eeprom" }, + { 6, "/sys/class/gpio/gpio173/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-19/19-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-19/19-0051/eeprom" }, + { 7, "/sys/class/gpio/gpio174/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-20/20-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-20/20-0051/eeprom" }, + { 8, "/sys/class/gpio/gpio175/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-21/21-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-21/21-0051/eeprom" }, + { 9, "/sys/class/gpio/gpio176/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-22/22-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-22/22-0051/eeprom" }, + { 10, "/sys/class/gpio/gpio177/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-23/23-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-23/23-0051/eeprom" }, + { 11, "/sys/class/gpio/gpio178/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-24/24-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-24/24-0051/eeprom" }, + { 12, "/sys/class/gpio/gpio179/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-25/25-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-25/25-0051/eeprom" }, + { 13, "/sys/class/gpio/gpio180/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-26/26-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-26/26-0051/eeprom" }, + { 14, "/sys/class/gpio/gpio181/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-27/27-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-27/27-0051/eeprom" }, + { 15, "/sys/class/gpio/gpio182/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-28/28-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-28/28-0051/eeprom" }, + { 16, "/sys/class/gpio/gpio183/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-29/29-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-29/29-0051/eeprom" }, + { 17, "/sys/class/gpio/gpio144/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-30/30-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-30/30-0051/eeprom" }, + { 18, "/sys/class/gpio/gpio145/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-31/31-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-31/31-0051/eeprom" }, + { 19, "/sys/class/gpio/gpio146/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-32/32-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-32/32-0051/eeprom" }, + { 20, "/sys/class/gpio/gpio147/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-33/33-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-33/33-0051/eeprom" }, + { 21, "/sys/class/gpio/gpio148/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-34/34-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-34/34-0051/eeprom" }, + { 22, "/sys/class/gpio/gpio149/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-35/35-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-35/35-0051/eeprom" }, + { 23, "/sys/class/gpio/gpio150/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-36/36-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-35/35-0051/eeprom" }, + { 24, "/sys/class/gpio/gpio151/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-37/37-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-37/37-0051/eeprom" }, + { 25, "/sys/class/gpio/gpio152/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-38/38-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-38/38-0051/eeprom" }, + { 26, "/sys/class/gpio/gpio153/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-39/39-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-39/39-0051/eeprom" }, + { 27, "/sys/class/gpio/gpio154/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-40/40-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-40/40-0051/eeprom" }, + { 28, "/sys/class/gpio/gpio155/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-41/41-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-41/41-0051/eeprom" }, + { 29, "/sys/class/gpio/gpio156/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-42/42-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-42/42-0051/eeprom" }, + { 30, "/sys/class/gpio/gpio157/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-43/43-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-43/43-0051/eeprom" }, + { 31, "/sys/class/gpio/gpio158/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-44/44-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-44/44-0051/eeprom" }, + { 32, "/sys/class/gpio/gpio159/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-45/45-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-45/45-0051/eeprom" }, + { 33, "/sys/class/gpio/gpio120/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-46/46-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-46/46-0051/eeprom" }, + { 34, "/sys/class/gpio/gpio121/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-47/47-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-47/47-0051/eeprom" }, + { 35, "/sys/class/gpio/gpio122/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-48/48-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-48/48-0051/eeprom" }, + { 36, "/sys/class/gpio/gpio123/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-49/49-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-49/49-0051/eeprom" }, + { 37, "/sys/class/gpio/gpio124/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-50/50-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-50/50-0051/eeprom" }, + { 38, "/sys/class/gpio/gpio125/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-51/51-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-51/51-0051/eeprom" }, + { 39, "/sys/class/gpio/gpio126/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-52/52-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-52/52-0051/eeprom" }, + { 40, "/sys/class/gpio/gpio127/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-53/53-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-53/53-0051/eeprom" }, + { 41, "/sys/class/gpio/gpio128/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-54/54-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-54/54-0051/eeprom" }, + { 42, "/sys/class/gpio/gpio129/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-55/55-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-55/55-0051/eeprom" }, + { 43, "/sys/class/gpio/gpio130/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-56/56-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-56/56-0051/eeprom" }, + { 44, "/sys/class/gpio/gpio131/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-57/57-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-57/57-0051/eeprom" }, + { 45, "/sys/class/gpio/gpio132/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-58/58-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-58/58-0051/eeprom" }, + { 46, "/sys/class/gpio/gpio133/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-59/59-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-59/59-0051/eeprom" }, + { 47, "/sys/class/gpio/gpio134/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-60/60-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-60/60-0051/eeprom" }, + { 48, "/sys/class/gpio/gpio135/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-61/61-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-61/61-0051/eeprom" }, + { 49, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-10/10-0050/eeprom", NULL }, + { 50, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-11/11-0050/eeprom", NULL }, + { 51, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-12/12-0050/eeprom", NULL }, + { 52, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-13/13-0050/eeprom", NULL }, }; diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c index 19379a12..485c1c3b 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c @@ -24,7 +24,7 @@ onlp_sysi_init(void) } #define QUANTA_SYS_EEPROM_PATH \ -"/sys/devices/soc.0/ffe03000.i2c/i2c-0/i2c-2/2-0054/eeprom" +"/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-2/2-0054/eeprom" int onlp_sysi_onie_info_get(onlp_onie_info_t* onie) diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py index 49319b5e..bf40afa7 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py @@ -11,9 +11,11 @@ class OnlPlatform_powerpc_quanta_ly2_r0(OnlPlatformQuanta, SYS_OBJECT_ID=".3048.1" def baseconfig(self): + self.insmod("quanta-ly2-i2c-mux.ko") + self.insmod("quanta-ly-hwmon.ko") subprocess.check_call("%s/sbin/gpio_init" % self.basedir_onl()) - fan_dir='/sys/devices/soc.0/ffe03000.i2c/i2c-0/i2c-4/4-002e/fan_dir' + fan_dir='/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-4/4-002e/fan_dir' if os.path.exists(fan_dir): with open(fan_dir) as f: data = f.read() From ee0ec35c6053e51f68b762de32baddd54d999d9c Mon Sep 17 00:00:00 2001 From: Zi Zhou Date: Fri, 17 Feb 2017 18:46:45 -0800 Subject: [PATCH 2/4] onlp driver update for kernel 3.16-lts --- .../src/module/src/powerpc_quanta_lb9_int.h | 8 +- .../onlp/builds/src/module/src/psui.c | 4 +- .../onlp/builds/src/module/src/sfpi.c | 104 +++++++++--------- .../onlp/builds/src/module/src/sysi.c | 2 +- .../python/powerpc_quanta_ly2_r0/__init__.py | 2 +- 5 files changed, 60 insertions(+), 60 deletions(-) diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/onlp/builds/src/module/src/powerpc_quanta_lb9_int.h b/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/onlp/builds/src/module/src/powerpc_quanta_lb9_int.h index 53961dcc..176f74e2 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/onlp/builds/src/module/src/powerpc_quanta_lb9_int.h +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/onlp/builds/src/module/src/powerpc_quanta_lb9_int.h @@ -210,11 +210,11 @@ extern aim_map_si_t thermal_oid_desc_map[]; /* This is the fan controller in F2B mode */ #define SYS_CONTROLLER_PREFIX_F2B \ - "/sys/devices/e0000000.soc8541/e0003000.i2c/i2c-0/i2c-5/5-002c" + "/sys/bus/i2c/devices/5-002c" /* This is the fan controller in B2F mode */ #define SYS_CONTROLLER_PREFIX_B2F \ - "/sys/devices/e0000000.soc8541/e0003000.i2c/i2c-0/i2c-6/6-002f" + "/sys/bus/i2c/devices/6-002f" /* The temperature controller for both modes */ #define SYS_CONTROLLER_PREFIX_TEMPERATURE SYS_CONTROLLER_PREFIX_F2B @@ -223,10 +223,10 @@ extern aim_map_si_t thermal_oid_desc_map[]; * PSU1 and PSU2 sys paths */ #define SYS_PSU1_PREFIX \ - "/sys/devices/e0000000.soc8541/e0003000.i2c/i2c-0/i2c-7/7-0058" + "/sys/bus/i2c/devices/7-0058/hwmon/hwmon1" #define SYS_PSU2_PREFIX \ - "/sys/devices/e0000000.soc8541/e0003000.i2c/i2c-0/i2c-8/8-0059" + "/sys/bus/i2c/devices/8-0059/hwmon/hwmon2" #include "system.h" diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c index 95bf0114..a934daf2 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/psui.c @@ -50,8 +50,8 @@ static onlp_psu_info_t psus__[] = { char* psu_paths[] = { NULL, /* Not used */ - "/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-6/6-0058/hwmon/hwmon0", - "/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-7/7-0059/hwmon/hwmon1", + "/sys/bus/i2c/devices/6-0058/hwmon/hwmon0", + "/sys/bus/i2c/devices/7-0059/hwmon/hwmon1", }; int diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c index c2580b6e..3127950c 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sfpi.c @@ -44,58 +44,58 @@ typedef struct sfpmap_s { static sfpmap_t sfpmap__[] = { - { 1, "/sys/class/gpio/gpio168/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-14/14-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-14/14-0051/eeprom" }, - { 2, "/sys/class/gpio/gpio169/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-15/15-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-15/15-0051/eeprom" }, - { 3, "/sys/class/gpio/gpio170/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-16/16-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-16/16-0051/eeprom" }, - { 4, "/sys/class/gpio/gpio171/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-17/17-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-17/17-0051/eeprom" }, - { 5, "/sys/class/gpio/gpio172/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-18/18-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-18/18-0051/eeprom" }, - { 6, "/sys/class/gpio/gpio173/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-19/19-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-19/19-0051/eeprom" }, - { 7, "/sys/class/gpio/gpio174/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-20/20-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-20/20-0051/eeprom" }, - { 8, "/sys/class/gpio/gpio175/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-21/21-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-21/21-0051/eeprom" }, - { 9, "/sys/class/gpio/gpio176/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-22/22-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-22/22-0051/eeprom" }, - { 10, "/sys/class/gpio/gpio177/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-23/23-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-23/23-0051/eeprom" }, - { 11, "/sys/class/gpio/gpio178/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-24/24-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-24/24-0051/eeprom" }, - { 12, "/sys/class/gpio/gpio179/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-25/25-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-25/25-0051/eeprom" }, - { 13, "/sys/class/gpio/gpio180/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-26/26-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-26/26-0051/eeprom" }, - { 14, "/sys/class/gpio/gpio181/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-27/27-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-27/27-0051/eeprom" }, - { 15, "/sys/class/gpio/gpio182/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-28/28-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-28/28-0051/eeprom" }, - { 16, "/sys/class/gpio/gpio183/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-29/29-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-29/29-0051/eeprom" }, - { 17, "/sys/class/gpio/gpio144/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-30/30-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-30/30-0051/eeprom" }, - { 18, "/sys/class/gpio/gpio145/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-31/31-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-31/31-0051/eeprom" }, - { 19, "/sys/class/gpio/gpio146/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-32/32-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-32/32-0051/eeprom" }, - { 20, "/sys/class/gpio/gpio147/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-33/33-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-33/33-0051/eeprom" }, - { 21, "/sys/class/gpio/gpio148/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-34/34-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-34/34-0051/eeprom" }, - { 22, "/sys/class/gpio/gpio149/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-35/35-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-35/35-0051/eeprom" }, - { 23, "/sys/class/gpio/gpio150/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-36/36-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-35/35-0051/eeprom" }, - { 24, "/sys/class/gpio/gpio151/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-37/37-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-37/37-0051/eeprom" }, - { 25, "/sys/class/gpio/gpio152/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-38/38-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-38/38-0051/eeprom" }, - { 26, "/sys/class/gpio/gpio153/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-39/39-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-39/39-0051/eeprom" }, - { 27, "/sys/class/gpio/gpio154/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-40/40-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-40/40-0051/eeprom" }, - { 28, "/sys/class/gpio/gpio155/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-41/41-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-41/41-0051/eeprom" }, - { 29, "/sys/class/gpio/gpio156/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-42/42-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-42/42-0051/eeprom" }, - { 30, "/sys/class/gpio/gpio157/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-43/43-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-43/43-0051/eeprom" }, - { 31, "/sys/class/gpio/gpio158/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-44/44-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-44/44-0051/eeprom" }, - { 32, "/sys/class/gpio/gpio159/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-45/45-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-45/45-0051/eeprom" }, - { 33, "/sys/class/gpio/gpio120/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-46/46-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-46/46-0051/eeprom" }, - { 34, "/sys/class/gpio/gpio121/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-47/47-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-47/47-0051/eeprom" }, - { 35, "/sys/class/gpio/gpio122/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-48/48-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-48/48-0051/eeprom" }, - { 36, "/sys/class/gpio/gpio123/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-49/49-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-49/49-0051/eeprom" }, - { 37, "/sys/class/gpio/gpio124/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-50/50-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-50/50-0051/eeprom" }, - { 38, "/sys/class/gpio/gpio125/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-51/51-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-51/51-0051/eeprom" }, - { 39, "/sys/class/gpio/gpio126/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-52/52-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-52/52-0051/eeprom" }, - { 40, "/sys/class/gpio/gpio127/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-53/53-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-53/53-0051/eeprom" }, - { 41, "/sys/class/gpio/gpio128/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-54/54-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-54/54-0051/eeprom" }, - { 42, "/sys/class/gpio/gpio129/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-55/55-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-55/55-0051/eeprom" }, - { 43, "/sys/class/gpio/gpio130/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-56/56-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-56/56-0051/eeprom" }, - { 44, "/sys/class/gpio/gpio131/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-57/57-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-57/57-0051/eeprom" }, - { 45, "/sys/class/gpio/gpio132/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-58/58-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-58/58-0051/eeprom" }, - { 46, "/sys/class/gpio/gpio133/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-59/59-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-59/59-0051/eeprom" }, - { 47, "/sys/class/gpio/gpio134/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-60/60-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-60/60-0051/eeprom" }, - { 48, "/sys/class/gpio/gpio135/value", NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-61/61-0050/eeprom", "/sys/devices/soc.0/ffe03100.i2c/i2c-1/i2c-61/61-0051/eeprom" }, - { 49, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-10/10-0050/eeprom", NULL }, - { 50, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-11/11-0050/eeprom", NULL }, - { 51, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-12/12-0050/eeprom", NULL }, - { 52, NULL, NULL, "/sys/devices/soc@ffe00000/ffe03100.i2c/i2c-1/i2c-13/13-0050/eeprom", NULL }, + { 1, "/sys/class/gpio/gpio168/value", NULL, "/sys/bus/i2c/devices/14-0050/eeprom", "/sys/bus/i2c/devices/14-0051/eeprom" }, + { 2, "/sys/class/gpio/gpio169/value", NULL, "/sys/bus/i2c/devices/15-0050/eeprom", "/sys/bus/i2c/devices/15-0051/eeprom" }, + { 3, "/sys/class/gpio/gpio170/value", NULL, "/sys/bus/i2c/devices/16-0050/eeprom", "/sys/bus/i2c/devices/16-0051/eeprom" }, + { 4, "/sys/class/gpio/gpio171/value", NULL, "/sys/bus/i2c/devices/17-0050/eeprom", "/sys/bus/i2c/devices/17-0051/eeprom" }, + { 5, "/sys/class/gpio/gpio172/value", NULL, "/sys/bus/i2c/devices/18-0050/eeprom", "/sys/bus/i2c/devices/18-0051/eeprom" }, + { 6, "/sys/class/gpio/gpio173/value", NULL, "/sys/bus/i2c/devices/19-0050/eeprom", "/sys/bus/i2c/devices/19-0051/eeprom" }, + { 7, "/sys/class/gpio/gpio174/value", NULL, "/sys/bus/i2c/devices/20-0050/eeprom", "/sys/bus/i2c/devices/20-0051/eeprom" }, + { 8, "/sys/class/gpio/gpio175/value", NULL, "/sys/bus/i2c/devices/21-0050/eeprom", "/sys/bus/i2c/devices/21-0051/eeprom" }, + { 9, "/sys/class/gpio/gpio176/value", NULL, "/sys/bus/i2c/devices/22-0050/eeprom", "/sys/bus/i2c/devices/22-0051/eeprom" }, + { 10, "/sys/class/gpio/gpio177/value", NULL, "/sys/bus/i2c/devices/23-0050/eeprom", "/sys/bus/i2c/devices/23-0051/eeprom" }, + { 11, "/sys/class/gpio/gpio178/value", NULL, "/sys/bus/i2c/devices/24-0050/eeprom", "/sys/bus/i2c/devices/24-0051/eeprom" }, + { 12, "/sys/class/gpio/gpio179/value", NULL, "/sys/bus/i2c/devices/25-0050/eeprom", "/sys/bus/i2c/devices/25-0051/eeprom" }, + { 13, "/sys/class/gpio/gpio180/value", NULL, "/sys/bus/i2c/devices/26-0050/eeprom", "/sys/bus/i2c/devices/26-0051/eeprom" }, + { 14, "/sys/class/gpio/gpio181/value", NULL, "/sys/bus/i2c/devices/27-0050/eeprom", "/sys/bus/i2c/devices/27-0051/eeprom" }, + { 15, "/sys/class/gpio/gpio182/value", NULL, "/sys/bus/i2c/devices/28-0050/eeprom", "/sys/bus/i2c/devices/28-0051/eeprom" }, + { 16, "/sys/class/gpio/gpio183/value", NULL, "/sys/bus/i2c/devices/29-0050/eeprom", "/sys/bus/i2c/devices/29-0051/eeprom" }, + { 17, "/sys/class/gpio/gpio144/value", NULL, "/sys/bus/i2c/devices/30-0050/eeprom", "/sys/bus/i2c/devices/30-0051/eeprom" }, + { 18, "/sys/class/gpio/gpio145/value", NULL, "/sys/bus/i2c/devices/31-0050/eeprom", "/sys/bus/i2c/devices/31-0051/eeprom" }, + { 19, "/sys/class/gpio/gpio146/value", NULL, "/sys/bus/i2c/devices/32-0050/eeprom", "/sys/bus/i2c/devices/32-0051/eeprom" }, + { 20, "/sys/class/gpio/gpio147/value", NULL, "/sys/bus/i2c/devices/33-0050/eeprom", "/sys/bus/i2c/devices/33-0051/eeprom" }, + { 21, "/sys/class/gpio/gpio148/value", NULL, "/sys/bus/i2c/devices/34-0050/eeprom", "/sys/bus/i2c/devices/34-0051/eeprom" }, + { 22, "/sys/class/gpio/gpio149/value", NULL, "/sys/bus/i2c/devices/35-0050/eeprom", "/sys/bus/i2c/devices/35-0051/eeprom" }, + { 23, "/sys/class/gpio/gpio150/value", NULL, "/sys/bus/i2c/devices/36-0050/eeprom", "/sys/bus/i2c/devices/35-0051/eeprom" }, + { 24, "/sys/class/gpio/gpio151/value", NULL, "/sys/bus/i2c/devices/37-0050/eeprom", "/sys/bus/i2c/devices/37-0051/eeprom" }, + { 25, "/sys/class/gpio/gpio152/value", NULL, "/sys/bus/i2c/devices/38-0050/eeprom", "/sys/bus/i2c/devices/38-0051/eeprom" }, + { 26, "/sys/class/gpio/gpio153/value", NULL, "/sys/bus/i2c/devices/39-0050/eeprom", "/sys/bus/i2c/devices/39-0051/eeprom" }, + { 27, "/sys/class/gpio/gpio154/value", NULL, "/sys/bus/i2c/devices/40-0050/eeprom", "/sys/bus/i2c/devices/40-0051/eeprom" }, + { 28, "/sys/class/gpio/gpio155/value", NULL, "/sys/bus/i2c/devices/41-0050/eeprom", "/sys/bus/i2c/devices/41-0051/eeprom" }, + { 29, "/sys/class/gpio/gpio156/value", NULL, "/sys/bus/i2c/devices/42-0050/eeprom", "/sys/bus/i2c/devices/42-0051/eeprom" }, + { 30, "/sys/class/gpio/gpio157/value", NULL, "/sys/bus/i2c/devices/43-0050/eeprom", "/sys/bus/i2c/devices/43-0051/eeprom" }, + { 31, "/sys/class/gpio/gpio158/value", NULL, "/sys/bus/i2c/devices/44-0050/eeprom", "/sys/bus/i2c/devices/44-0051/eeprom" }, + { 32, "/sys/class/gpio/gpio159/value", NULL, "/sys/bus/i2c/devices/45-0050/eeprom", "/sys/bus/i2c/devices/45-0051/eeprom" }, + { 33, "/sys/class/gpio/gpio120/value", NULL, "/sys/bus/i2c/devices/46-0050/eeprom", "/sys/bus/i2c/devices/46-0051/eeprom" }, + { 34, "/sys/class/gpio/gpio121/value", NULL, "/sys/bus/i2c/devices/47-0050/eeprom", "/sys/bus/i2c/devices/47-0051/eeprom" }, + { 35, "/sys/class/gpio/gpio122/value", NULL, "/sys/bus/i2c/devices/48-0050/eeprom", "/sys/bus/i2c/devices/48-0051/eeprom" }, + { 36, "/sys/class/gpio/gpio123/value", NULL, "/sys/bus/i2c/devices/49-0050/eeprom", "/sys/bus/i2c/devices/49-0051/eeprom" }, + { 37, "/sys/class/gpio/gpio124/value", NULL, "/sys/bus/i2c/devices/50-0050/eeprom", "/sys/bus/i2c/devices/50-0051/eeprom" }, + { 38, "/sys/class/gpio/gpio125/value", NULL, "/sys/bus/i2c/devices/51-0050/eeprom", "/sys/bus/i2c/devices/51-0051/eeprom" }, + { 39, "/sys/class/gpio/gpio126/value", NULL, "/sys/bus/i2c/devices/52-0050/eeprom", "/sys/bus/i2c/devices/52-0051/eeprom" }, + { 40, "/sys/class/gpio/gpio127/value", NULL, "/sys/bus/i2c/devices/53-0050/eeprom", "/sys/bus/i2c/devices/53-0051/eeprom" }, + { 41, "/sys/class/gpio/gpio128/value", NULL, "/sys/bus/i2c/devices/54-0050/eeprom", "/sys/bus/i2c/devices/54-0051/eeprom" }, + { 42, "/sys/class/gpio/gpio129/value", NULL, "/sys/bus/i2c/devices/55-0050/eeprom", "/sys/bus/i2c/devices/55-0051/eeprom" }, + { 43, "/sys/class/gpio/gpio130/value", NULL, "/sys/bus/i2c/devices/56-0050/eeprom", "/sys/bus/i2c/devices/56-0051/eeprom" }, + { 44, "/sys/class/gpio/gpio131/value", NULL, "/sys/bus/i2c/devices/57-0050/eeprom", "/sys/bus/i2c/devices/57-0051/eeprom" }, + { 45, "/sys/class/gpio/gpio132/value", NULL, "/sys/bus/i2c/devices/58-0050/eeprom", "/sys/bus/i2c/devices/58-0051/eeprom" }, + { 46, "/sys/class/gpio/gpio133/value", NULL, "/sys/bus/i2c/devices/59-0050/eeprom", "/sys/bus/i2c/devices/59-0051/eeprom" }, + { 47, "/sys/class/gpio/gpio134/value", NULL, "/sys/bus/i2c/devices/60-0050/eeprom", "/sys/bus/i2c/devices/60-0051/eeprom" }, + { 48, "/sys/class/gpio/gpio135/value", NULL, "/sys/bus/i2c/devices/61-0050/eeprom", "/sys/bus/i2c/devices/61-0051/eeprom" }, + { 49, NULL, NULL, "/sys/bus/i2c/devices/i2c-10/10-0050/eeprom", NULL }, + { 50, NULL, NULL, "/sys/bus/i2c/devices/i2c-11/11-0050/eeprom", NULL }, + { 51, NULL, NULL, "/sys/bus/i2c/devices/i2c-12/12-0050/eeprom", NULL }, + { 52, NULL, NULL, "/sys/bus/i2c/devices/i2c-13/13-0050/eeprom", NULL }, }; diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c index 485c1c3b..25cade61 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/onlp/builds/src/module/src/sysi.c @@ -24,7 +24,7 @@ onlp_sysi_init(void) } #define QUANTA_SYS_EEPROM_PATH \ -"/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-2/2-0054/eeprom" +"/sys/bus/i2c/devices/2-0054/eeprom" int onlp_sysi_onie_info_get(onlp_onie_info_t* onie) diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py index bf40afa7..202f214d 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/python/powerpc_quanta_ly2_r0/__init__.py @@ -15,7 +15,7 @@ class OnlPlatform_powerpc_quanta_ly2_r0(OnlPlatformQuanta, self.insmod("quanta-ly-hwmon.ko") subprocess.check_call("%s/sbin/gpio_init" % self.basedir_onl()) - fan_dir='/sys/devices/soc@ffe00000/ffe03000.i2c/i2c-0/i2c-4/4-002e/fan_dir' + fan_dir='/sys/bus/i2c/devices/4-002e/fan_dir' if os.path.exists(fan_dir): with open(fan_dir) as f: data = f.read() From bea691120e9739eed6d53177cb7c4a49e7f3dcb1 Mon Sep 17 00:00:00 2001 From: Zi Zhou Date: Tue, 21 Feb 2017 11:29:38 -0800 Subject: [PATCH 3/4] recognize QSFP-LM4 (from finisar/DELL) --- packages/base/any/onlp/src/sff/module/inc/sff/8436.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/base/any/onlp/src/sff/module/inc/sff/8436.h b/packages/base/any/onlp/src/sff/module/inc/sff/8436.h index cf389351..6383eddf 100644 --- a/packages/base/any/onlp/src/sff/module/inc/sff/8436.h +++ b/packages/base/any/onlp/src/sff/module/inc/sff/8436.h @@ -257,17 +257,21 @@ _sff8436_qsfp_40g_pre(const uint8_t* idprom) return 0; } + static inline int _sff8436_qsfp_40g_lm4(const uint8_t* idprom) { if(!SFF8436_MODULE_QSFP_PLUS_V2(idprom)) { return 0; } - /* Restrict to Finisar FTL4C3QE1C at this point. */ - if(strncmp("FTL4C3QE1C ", (char*)idprom+168, 16)) { + + if (idprom[130] != SFF8436_CONN_LC) return 0; + if (!SFF8436_MEDIA_NONE(idprom)) return 0; + + if ((idprom[142] != 1) && idprom[143] != 70) { return 0; } - return SFF8436_MEDIA_NONE(idprom); + return 1; } static inline int From 8c2e2873a227939611602877712d2682e8154fdd Mon Sep 17 00:00:00 2001 From: Zi Zhou Date: Tue, 21 Feb 2017 11:31:43 -0800 Subject: [PATCH 4/4] switch to kernel 3.16-lts (powerpc platform) --- .../src/lib/platform-config-defaults-uboot.yml | 7 +++++++ .../r0/src/lib/powerpc-accton-as5610-52x-r0.yml | 2 +- .../platform-config/r0/src/lib/powerpc-quanta-lb9-r0.yml | 2 +- .../platform-config/r0/src/lib/powerpc-quanta-ly2-r0.yml | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-uboot.yml b/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-uboot.yml index 34d0e563..fe3a103a 100644 --- a/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-uboot.yml +++ b/packages/base/all/vendor-config-onl/src/lib/platform-config-defaults-uboot.yml @@ -25,6 +25,13 @@ default: =: kernel-3.9.6-powerpc-e500v.bin.gz <<: *e500v-kernel-package + e500v-3-16-package: &e500v-3-16-package + package: onl-kernel-3.16-lts-powerpc-e500v-all:powerpc + + e500v-3.16: &e500v-3-16 + =: kernel-3.16-lts-powerpc-e500v-all.bin.gz + <<: *e500v-3-16-package + e500mc-kernel-package: &e500mc-kernel-package package: onl-kernel-3.8.13-powerpc-e500mc:powerpc diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5610-52x/platform-config/r0/src/lib/powerpc-accton-as5610-52x-r0.yml b/packages/platforms/accton/powerpc/powerpc-accton-as5610-52x/platform-config/r0/src/lib/powerpc-accton-as5610-52x-r0.yml index 0aa24334..a8dbf1d0 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5610-52x/platform-config/r0/src/lib/powerpc-accton-as5610-52x-r0.yml +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5610-52x/platform-config/r0/src/lib/powerpc-accton-as5610-52x-r0.yml @@ -10,7 +10,7 @@ powerpc-accton-as5610-52x-r0: flat_image_tree: kernel: - <<: *e500v-kernel + <<: *e500v-3-16 dtb: =: powerpc-accton-as5610-52x-r0.dtb package: onl-platform-build-powerpc-accton-as5610-52x-r0:powerpc diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/platform-config/r0/src/lib/powerpc-quanta-lb9-r0.yml b/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/platform-config/r0/src/lib/powerpc-quanta-lb9-r0.yml index 1ab61bbd..2b92a3e3 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/platform-config/r0/src/lib/powerpc-quanta-lb9-r0.yml +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-lb9/platform-config/r0/src/lib/powerpc-quanta-lb9-r0.yml @@ -11,7 +11,7 @@ powerpc-quanta-lb9-r0: flat_image_tree: kernel: - <<: *e500v-kernel + <<: *e500v-3-16 dtb: =: powerpc-quanta-lb9-r0.dtb package: onl-platform-build-powerpc-quanta-lb9-r0:powerpc diff --git a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/lib/powerpc-quanta-ly2-r0.yml b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/lib/powerpc-quanta-ly2-r0.yml index 796f89d3..3e2074a5 100644 --- a/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/lib/powerpc-quanta-ly2-r0.yml +++ b/packages/platforms/quanta/powerpc/powerpc-quanta-ly2/platform-config/r0/src/lib/powerpc-quanta-ly2-r0.yml @@ -10,7 +10,7 @@ powerpc-quanta-ly2-r0: flat_image_tree: kernel: - <<: *e500v-kernel + <<: *e500v-3-16 dtb: =: powerpc-quanta-ly2-r0.dtb package: onl-platform-build-powerpc-quanta-ly2-r0:powerpc