diff options
| author | grace <[email protected]> | 2020-06-08 22:43:08 -0400 |
|---|---|---|
| committer | Alex Doyle <[email protected]> | 2020-06-09 13:26:44 -0700 |
| commit | cdfa419fc88b5e17dd42400cabbbbcd404072a37 (patch) | |
| tree | 6a164396c2745ddc3d202f3663fe72d40567de29 | |
| parent | 56811a9c66c82461ffb6f314026dce6027c56b23 (diff) | |
New platform: delta_agcv208sv1
New Project is created for Agema.
Signed-off-by: grace <[email protected]>
Signed-off-by: Alex Doyle <[email protected]>
| -rw-r--r-- | build-config/scripts/onie-build-targets.json | 1 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/INSTALL | 86 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/busybox/conf/config | 10 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/busybox/patches/series | 0 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/demo/platform.conf | 1 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/firmware/bios/update_bios.sh | 18 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/firmware/cpld/update_cpld.sh | 17 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/firmware/fw-install.sh | 38 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/firmware/fw-version.make | 10 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/installer.conf | 39 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/kernel/config | 17 | ||||
| -rw-r--r-- | machine/delta/delta_agcv208sv1/kernel/driver-patch.patch | 219 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/kernel/series | 2 | ||||
| -rw-r--r-- | machine/delta/delta_agcv208sv1/kernel/xhci.patch | 26 | ||||
| -rwxr-xr-x | machine/delta/delta_agcv208sv1/machine.make | 47 |
15 files changed, 531 insertions, 0 deletions
diff --git a/build-config/scripts/onie-build-targets.json b/build-config/scripts/onie-build-targets.json index c6fb9964..eadfc71b 100644 --- a/build-config/scripts/onie-build-targets.json +++ b/build-config/scripts/onie-build-targets.json @@ -146,6 +146,7 @@ { "Vendor": "delta", "Platform": "delta_ag9064", "BuildEnv": "Debian9", "Release": "2020.05br", "Architecture": "amd64", "Notes": "No notes." }, { "Vendor": "delta", "Platform": "delta_agc7648a", "BuildEnv": "Debian9", "Release": "2020.05br", "Architecture": "amd64", "Notes": "No notes." }, { "Vendor": "delta", "Platform": "delta_agc7648s", "BuildEnv": "Debian9", "Release": "2020.05br", "Architecture": "amd64", "Notes": "No notes." }, + { "Vendor": "delta", "Platform": "delta_agcv208sv1", "BuildEnv": "Debian9", "Release": "2020.05br", "Architecture": "amd64", "Notes": "No notes." }, { "Vendor": "delta", "Platform": "delta_ak7448", "BuildEnv": "Debian9", "Release": "2020.05br", "Architecture": "amd64", "Notes": "No notes." }, { "Vendor": "delta", "Platform": "delta_common_bwde", "BuildEnv": "Debian9", "Release": "2020.05br", "Architecture": "amd64", "Notes": "No notes." }, { "Vendor": "delta", "Platform": "delta_common_dnv", "BuildEnv": "Debian9", "Release": "2020.05br", "Architecture": "amd64", "Notes": "No notes." }, diff --git a/machine/delta/delta_agcv208sv1/INSTALL b/machine/delta/delta_agcv208sv1/INSTALL new file mode 100755 index 00000000..c331c26c --- /dev/null +++ b/machine/delta/delta_agcv208sv1/INSTALL @@ -0,0 +1,86 @@ +================================================================================ +Installing ONIE on DELTA agcv208sv1 Switch (CPU Module : Intel Deverton CPU Module) +================================================================================ + +Cross-Compiling ONIE +==================== + +To compile ONIE first change directories to ``build-config`` and then +type ``"make MACHINEROOT=../machine/delta MACHINE=delta_agcv208sv1 all"``. For example:: + + $ cd build-config + $ make -j4 MACHINEROOT=../machine/delta MACHINE=delta_agcv208sv1 all + +When complete, the ONIE binaries are located in +``build/images``:: + +-rw-r--r-- 1 lsharma ncore 3903568 Dec 6 19:45 delta_agcv208sv1-r0.vmlinuz +-rw-r--r-- 1 lsharma ncore 5504404 May 28 15:31 9480204 Dec 6 19:41 delta_agcv208sv1-r0.initrd +-rw-r--r-- 1 lsharma ncore 13539191 Dec 6 19:45 onie-updater-x86_64-delta_agcv208sv1-r0 +-rw-r--r-- 1 lsharma ncore 30670848 Dec 6 19:46 onie-recovery-x86_64-delta_agcv208sv1-r0.iso + +Cross-Compiling the DEMO OS +=========================== + +To compile the demo OS first change directories to ``build-config`` +and then type ``"make MACHINEROOT=../machine/delta MACHINE=delta_agcv208sv1 demo"``. For example:: + + $ cd build-config + $ make -j4 MACHINEROOT=../machine/delta MACHINE=delta_agcv208sv1 demo + +When complete, the demo OS installer is located in ``build/images``:: + + -rw-r--r-- 13415688 Dec 6 19:50 demo-installer-x86_64-delta_agcv208sv1-r0.bin + +Installing ONIE on a Blank Machine +================================== + +To install ONIE on a new machine use one of the onie-recovery images. + +Overview +-------- + +An "ONIE recovery image" is used for: + +1. installing ONIE on a blank machine, i.e. what manufacturing would + use. + +2. recovering a destroyed ONIE system. + +The recovery image is: + +. <machine>.iso -- a hybrid ISO image. + +ISO Recovery Image +------------------ + +You can use the .iso image to create a bootable USB memory stick. +Use ``dd`` to copy the .iso image to a USB stick and boot from that:: + + dd if=<machine>.iso of=/dev/sdX bs=10M + +Find the correct ``/dev/sdX`` by inspecing the ``dmesg`` +output after inserting the USB stick into your work station. + +To enable booting from USB in the BIOS: + +1. Insert the USB stick (needs to be in before configuring BIOS) + +2. Power on the S6010 and enter the BIOS configuration + +3. Set the USB device to "Hard Disk":: + + Advanced-->USB Configuration-->Mass Storage Devices: + <Name of your device> [Hard Disk] + + <Name of your device> might be something like "SanDisk 1.26". + +4. Set the hard drive boot order:: + + Boot-->Hard Drive BBS Priorities-->Boot Option #1 + + In "Boot Option #1" select the device that corresponds to your + device. + +5. Save and Exit the BIOS configuration + diff --git a/machine/delta/delta_agcv208sv1/busybox/conf/config b/machine/delta/delta_agcv208sv1/busybox/conf/config new file mode 100755 index 00000000..53bc6660 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/busybox/conf/config @@ -0,0 +1,10 @@ +CONFIG_SYS_EEPROM=y +CONFIG_SYS_EEPROM_DEVICE_I2C=y +CONFIG_SYS_EEPROM_MAX_SIZE=16384 +CONFIG_SYS_EEPROM_OFFSET=2048 +CONFIG_SYS_EEPROM_SIZE=1024 +CONFIG_SYS_EEPROM_I2C_DEVICE="/dev/i2c-1" +CONFIG_SYS_EEPROM_I2C_ADDR=0x56 +CONFIG_SYS_EEPROM_I2C_MEM_ADDR_BITS=16 +CONFIG_SYS_EEPROM_I2C_WRITE_3B_DELAY=4000 +CONFIG_SYS_EEPROM_I2C_WRITE_2B_DELAY=4000 diff --git a/machine/delta/delta_agcv208sv1/busybox/patches/series b/machine/delta/delta_agcv208sv1/busybox/patches/series new file mode 100755 index 00000000..e69de29b --- /dev/null +++ b/machine/delta/delta_agcv208sv1/busybox/patches/series diff --git a/machine/delta/delta_agcv208sv1/demo/platform.conf b/machine/delta/delta_agcv208sv1/demo/platform.conf new file mode 100755 index 00000000..a70c8ee9 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/demo/platform.conf @@ -0,0 +1 @@ +# delta_agcv208sv1 specific info diff --git a/machine/delta/delta_agcv208sv1/firmware/bios/update_bios.sh b/machine/delta/delta_agcv208sv1/firmware/bios/update_bios.sh new file mode 100755 index 00000000..f324ca94 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/firmware/bios/update_bios.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +# +# Copyright (C) 2016 Curt Brune <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0 +# + +# This is a sample place holder script for updating a machine BIOS. A +# real BIOS update script would use a utility like flashrom. + +for i in $(seq 1 10) ; do + echo -n "." + sleep 0.2 +done + +# No errors detected +exit 0 diff --git a/machine/delta/delta_agcv208sv1/firmware/cpld/update_cpld.sh b/machine/delta/delta_agcv208sv1/firmware/cpld/update_cpld.sh new file mode 100755 index 00000000..7395ea81 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/firmware/cpld/update_cpld.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# +# Copyright (C) 2016 Curt Brune <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0 +# + +# This is a sample place holder script for updating a machine CPLD. + +for i in $(seq 1 10) ; do + echo -n "." + sleep 0.2 +done + +# No errors detected +exit 0 diff --git a/machine/delta/delta_agcv208sv1/firmware/fw-install.sh b/machine/delta/delta_agcv208sv1/firmware/fw-install.sh new file mode 100755 index 00000000..6a60c198 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/firmware/fw-install.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +# +# Copyright (C) 2016 Curt Brune <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0 +# + +# Demonstration of firmware update install script + +# This script is the entry point of the of the ONIE firmware update +# mechanism. + +# A machine uses this script to update "firmware", such as: +# - update BIOS +# - update CPLDs + +# Simulate updating the BIOS +echo -n "Updating BIOS " +bios/update_bios.sh || { + echo "ERROR: Problems updating the BIOS" + exit 1 +} +echo " done." + +# Simulate updating CPLDs +for cpld in $(seq 1 3) ; do + echo -n "Updating CPLD $cpld " + cpld/update_cpld.sh || { + echo "ERROR: Problems updating CPLD $cpld" + exit 1 + } + echo " done." +done + +# No errors detected +echo "Update complete. No errors detected." +exit 0 diff --git a/machine/delta/delta_agcv208sv1/firmware/fw-version.make b/machine/delta/delta_agcv208sv1/firmware/fw-version.make new file mode 100755 index 00000000..5ea46b41 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/firmware/fw-version.make @@ -0,0 +1,10 @@ +# +# Copyright (C) 2016 Curt Brune <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0 +# + +# Demonstration of firmware version + +# The firmware version is a free form string +FW_VERSION = DEMO-FW-1.2.3.4 diff --git a/machine/delta/delta_agcv208sv1/installer.conf b/machine/delta/delta_agcv208sv1/installer.conf new file mode 100755 index 00000000..34508ad6 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/installer.conf @@ -0,0 +1,39 @@ +# Delta agcv208sv1 +# CPU Module: Intel deverton + +description="Delta agcv208sv1 with Intel deverton CPU Module" + +# Default ONIE block device +install_device_platform() +{ + # search SATA SSD + for _device in /sys/block/*/device; do + + # work for kernel 4.1.17 + if readlink -f $_device |egrep -q "pci0000:00\/0000:00:14.0"; then + _disk=`echo $_device | cut -f4 -d/` + echo /dev/$_disk + return 0 + fi + done + + # search PCIe SSD + for _nvme_device in /sys/block/*/device; do + + # work for kernel 4.1.17 + if readlink -f $_nvme_device |egrep -q "pci0000:00\/0000:00:09.0\/0000:02:00.0"; then + _nvme_disk=`echo $_nvme_device | cut -f4 -d/` + echo /dev/$_nvme_disk + return 0 + fi + done + + # nothing found, just return /dev/sda + echo /dev/sda + return 1 +} + +# Local Variables: +# mode: shell-script +# eval: (sh-set-shell "/bin/sh" t nil) +# End: diff --git a/machine/delta/delta_agcv208sv1/kernel/config b/machine/delta/delta_agcv208sv1/kernel/config new file mode 100755 index 00000000..e8a44733 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/kernel/config @@ -0,0 +1,17 @@ + +CONFIG_I2C_ALGOBIT=n +CONFIG_I2C_ALGOPCF=n +CONFIG_I2C_ALGOPCA=n +CONFIG_I2C_HELPER_AUTO=n +CONFIG_I2C_SMBUS=y +CONFIG_I2C_I801=y +CONFIG_I2C_ISMT=y +# CONFIG_BLK_DEV_NVME_SCSI is not set +CONFIG_USB_SERIAL_CONSOLE=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_CP210X=y +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +CONFIG_HID_FF=y +CONFIG_HIDRAW=y diff --git a/machine/delta/delta_agcv208sv1/kernel/driver-patch.patch b/machine/delta/delta_agcv208sv1/kernel/driver-patch.patch new file mode 100644 index 00000000..1ef96456 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/kernel/driver-patch.patch @@ -0,0 +1,219 @@ + + +diff --git a/drivers/i2c/busses/i2c-ismt.c b/drivers/i2c/busses/i2c-ismt.c +index 7aea288..78ed75b 100644 +--- a/drivers/i2c/busses/i2c-ismt.c ++++ b/drivers/i2c/busses/i2c-ismt.c +@@ -16,7 +16,7 @@ + * General Public License for more details. + * The full GNU General Public License is included in this distribution + * in the file called LICENSE.GPL. +- * ++ * + * BSD LICENSE + * + * Redistribution and use in source and binary forms, with or without +@@ -66,6 +66,7 @@ + #include <linux/i2c.h> + #include <linux/acpi.h> + #include <linux/interrupt.h> ++#include <linux/delay.h> + + #include <linux/io-64-nonatomic-lo-hi.h> + +@@ -75,6 +76,7 @@ + /* PCI DIDs for the Intel SMBus Message Transport (SMT) Devices */ + #define PCI_DEVICE_ID_INTEL_S1200_SMT0 0x0c59 + #define PCI_DEVICE_ID_INTEL_S1200_SMT1 0x0c5a ++#define PCI_DEVICE_ID_INTEL_CDF_SMT 0x18ac + #define PCI_DEVICE_ID_INTEL_DNV_SMT 0x19ac + #define PCI_DEVICE_ID_INTEL_AVOTON_SMT 0x1f15 + +@@ -172,7 +174,7 @@ struct ismt_priv { + dma_addr_t io_rng_dma; /* descriptor HW base addr */ + u8 head; /* ring buffer head pointer */ + struct completion cmp; /* interrupt completion */ +- u8 dma_buffer[I2C_SMBUS_BLOCK_MAX + 1]; /* temp R/W data buffer */ ++ u8 buffer[I2C_SMBUS_BLOCK_MAX + 16]; /* temp R/W data buffer */ + }; + + /** +@@ -181,6 +183,7 @@ struct ismt_priv { + static const struct pci_device_id ismt_ids[] = { + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_S1200_SMT0) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_S1200_SMT1) }, ++ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CDF_SMT) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DNV_SMT) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_AVOTON_SMT) }, + { 0, } +@@ -189,9 +192,15 @@ static const struct pci_device_id ismt_ids[] = { + MODULE_DEVICE_TABLE(pci, ismt_ids); + + /* Bus speed control bits for slow debuggers - refer to the docs for usage */ +-static unsigned int bus_speed; ++//static unsigned int bus_speed; ++static unsigned int bus_speed = 100; ++static unsigned int delay = 1000; + module_param(bus_speed, uint, S_IRUGO); +-MODULE_PARM_DESC(bus_speed, "Bus Speed in kHz (0 = BIOS default)"); ++//MODULE_PARM_DESC(bus_speed, "Bus Speed in kHz (0 = BIOS default)"); ++ ++MODULE_PARM_DESC(bus_speed, "Bus Speed in kHz (1000 by default)"); ++module_param(delay, uint, S_IRUGO); ++MODULE_PARM_DESC(delay, "Delay in microsecs before access (1000 by default)"); + + /** + * __ismt_desc_dump() - dump the contents of a specific descriptor +@@ -320,10 +329,12 @@ static int ismt_process_desc(const struct ismt_desc *desc, + struct ismt_priv *priv, int size, + char read_write) + { +- u8 *dma_buffer = priv->dma_buffer; ++ u8 *dma_buffer = PTR_ALIGN(&priv->buffer[0], 16); + + dev_dbg(&priv->pci_dev->dev, "Processing completed descriptor\n"); + __ismt_desc_dump(&priv->pci_dev->dev, desc); ++ ismt_gen_reg_dump(priv); ++ ismt_mstr_reg_dump(priv); + + if (desc->status & ISMT_DESC_SCS) { + if (read_write == I2C_SMBUS_WRITE && +@@ -393,11 +404,15 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + struct ismt_desc *desc; + struct ismt_priv *priv = i2c_get_adapdata(adap); + struct device *dev = &priv->pci_dev->dev; ++ u8 *dma_buffer = PTR_ALIGN(&priv->buffer[0], 16); ++ ++ if (delay > 0) ++ udelay(delay); + + desc = &priv->hw[priv->head]; + + /* Initialize the DMA buffer */ +- memset(priv->dma_buffer, 0, sizeof(priv->dma_buffer)); ++ memset(priv->buffer, 0, sizeof(priv->buffer)); + + /* Initialize the descriptor */ + memset(desc, 0, sizeof(struct ismt_desc)); +@@ -415,7 +430,7 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + + switch (size) { + case I2C_SMBUS_QUICK: +- dev_dbg(dev, "I2C_SMBUS_QUICK\n"); ++ //dev_dbg(dev, "I2C_SMBUS_QUICK\n"); + break; + + case I2C_SMBUS_BYTE: +@@ -446,8 +461,8 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + desc->wr_len_cmd = 2; + dma_size = 2; + dma_direction = DMA_TO_DEVICE; +- priv->dma_buffer[0] = command; +- priv->dma_buffer[1] = data->byte; ++ dma_buffer[0] = command; ++ dma_buffer[1] = data->byte; + } else { + /* Read Byte */ + dev_dbg(dev, "I2C_SMBUS_BYTE_DATA: READ\n"); +@@ -466,9 +481,9 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + desc->wr_len_cmd = 3; + dma_size = 3; + dma_direction = DMA_TO_DEVICE; +- priv->dma_buffer[0] = command; +- priv->dma_buffer[1] = data->word & 0xff; +- priv->dma_buffer[2] = data->word >> 8; ++ dma_buffer[0] = command; ++ dma_buffer[1] = data->word & 0xff; ++ dma_buffer[2] = data->word >> 8; + } else { + /* Read Word */ + dev_dbg(dev, "I2C_SMBUS_WORD_DATA: READ\n"); +@@ -486,9 +501,9 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + desc->rd_len = 2; + dma_size = 3; + dma_direction = DMA_BIDIRECTIONAL; +- priv->dma_buffer[0] = command; +- priv->dma_buffer[1] = data->word & 0xff; +- priv->dma_buffer[2] = data->word >> 8; ++ dma_buffer[0] = command; ++ dma_buffer[1] = data->word & 0xff; ++ dma_buffer[2] = data->word >> 8; + break; + + case I2C_SMBUS_BLOCK_DATA: +@@ -499,8 +514,8 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + dma_direction = DMA_TO_DEVICE; + desc->wr_len_cmd = dma_size; + desc->control |= ISMT_DESC_BLK; +- priv->dma_buffer[0] = command; +- memcpy(&priv->dma_buffer[1], &data->block[1], dma_size - 1); ++ dma_buffer[0] = command; ++ memcpy(&dma_buffer[1], &data->block[1], dma_size - 1); + } else { + /* Block Read */ + dev_dbg(dev, "I2C_SMBUS_BLOCK_DATA: READ\n"); +@@ -527,8 +542,8 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + dma_direction = DMA_TO_DEVICE; + desc->wr_len_cmd = dma_size; + desc->control |= ISMT_DESC_I2C; +- priv->dma_buffer[0] = command; +- memcpy(&priv->dma_buffer[1], &data->block[1], dma_size - 1); ++ dma_buffer[0] = command; ++ memcpy(&dma_buffer[1], &data->block[1], dma_size - 1); + } else { + /* i2c Block Read */ + dev_dbg(dev, "I2C_SMBUS_I2C_BLOCK_DATA: READ\n"); +@@ -557,23 +572,22 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + if (dma_size != 0) { + dev_dbg(dev, " dev=%p\n", dev); + dev_dbg(dev, " data=%p\n", data); +- dev_dbg(dev, " dma_buffer=%p\n", priv->dma_buffer); ++ dev_dbg(dev, " dma_buffer=%p\n", dma_buffer); + dev_dbg(dev, " dma_size=%d\n", dma_size); + dev_dbg(dev, " dma_direction=%d\n", dma_direction); + + dma_addr = dma_map_single(dev, +- priv->dma_buffer, ++ dma_buffer, + dma_size, + dma_direction); + + if (dma_mapping_error(dev, dma_addr)) { + dev_err(dev, "Error in mapping dma buffer %p\n", +- priv->dma_buffer); ++ dma_buffer); + return -EIO; + } + +- dev_dbg(dev, " dma_addr = 0x%016llX\n", +- (unsigned long long)dma_addr); ++ dev_dbg(dev, " dma_addr = %pad\n", &dma_addr); + + desc->dptr_low = lower_32_bits(dma_addr); + desc->dptr_high = upper_32_bits(dma_addr); +@@ -589,7 +603,7 @@ static int ismt_access(struct i2c_adapter *adap, u16 addr, + + /* unmap the data buffer */ + if (dma_size != 0) +- dma_unmap_single(&adap->dev, dma_addr, dma_size, dma_direction); ++ dma_unmap_single(dev, dma_addr, dma_size, dma_direction); + + if (unlikely(!time_left)) { + dev_err(dev, "completion wait timed out\n"); +@@ -759,7 +773,8 @@ static void ismt_hw_init(struct ismt_priv *priv) + bus_speed = 1000; + break; + } +- dev_dbg(dev, "SMBus clock is running at %d kHz\n", bus_speed); ++ //dev_dbg(dev, "SMBus clock is running at %d kHz\n", bus_speed); ++ dev_info(dev, "SMBus clock is running at %d kHz with delay %d us\n", bus_speed, delay); + } + + /** +@@ -954,4 +969,4 @@ module_pci_driver(ismt_driver); + + MODULE_LICENSE("Dual BSD/GPL"); + MODULE_AUTHOR("Bill E. Brown <[email protected]>"); +-MODULE_DESCRIPTION("Intel SMBus Message Transport (iSMT) driver"); ++MODULE_DESCRIPTION("Intel SMBus Message Transport (iSMT) driver"); +\ No newline at end of file diff --git a/machine/delta/delta_agcv208sv1/kernel/series b/machine/delta/delta_agcv208sv1/kernel/series new file mode 100755 index 00000000..ec1633c6 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/kernel/series @@ -0,0 +1,2 @@ +driver-patch.patch +xhci.patch diff --git a/machine/delta/delta_agcv208sv1/kernel/xhci.patch b/machine/delta/delta_agcv208sv1/kernel/xhci.patch new file mode 100644 index 00000000..0e4c72c0 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/kernel/xhci.patch @@ -0,0 +1,26 @@ +diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c +index 7c54a19..74ca8ae 100644 +--- a/drivers/usb/core/config.c ++++ b/drivers/usb/core/config.c +@@ -324,6 +324,21 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum, + endpoint->desc.bInterval = n; + } + ++#if 1 /* defined(_M_DEI_PORTING_) */ ++ if ( (le16_to_cpu(0x04d8) == le16_to_cpu(to_usb_device(ddev)->descriptor.idVendor)) && ++ (le16_to_cpu(0x00de) == le16_to_cpu(to_usb_device(ddev)->descriptor.idProduct)) ) ++ { ++ unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0; ++ cpuid(1, &eax, &ebx, &ecx, &edx); ++ ++ if ( 0x506F0 == (eax & 0x0FFFF0)) /* Intel Denverton CPU ? */ ++ { ++ endpoint->desc.bInterval = 3; ++ printk(KERN_INFO "Intel Denverton CPU board: MCP2210: EP bInterval[1] changed to [%d].\n", endpoint->desc.bInterval); ++ } ++ } ++#endif ++ + /* Some buggy low-speed devices have Bulk endpoints, which is + * explicitly forbidden by the USB spec. In an attempt to make + * them usable, we will try treating them as Interrupt endpoints. diff --git a/machine/delta/delta_agcv208sv1/machine.make b/machine/delta/delta_agcv208sv1/machine.make new file mode 100755 index 00000000..33cf7071 --- /dev/null +++ b/machine/delta/delta_agcv208sv1/machine.make @@ -0,0 +1,47 @@ +# Delta agcv208sv1 + +ONIE_ARCH ?= x86_64 +SWITCH_ASIC_VENDOR = bcm + +VENDOR_REV ?= 0 + + +# Translate hardware revision to ONIE hardware revision +ifeq ($(VENDOR_REV),0) + MACHINE_REV = 0 +else + $(warning Unknown VENDOR_REV '$(VENDOR_REV)' for MACHINE '$(MACHINE)') + $(error Unknown VENDOR_REV) +endif + +# The VENDOR_VERSION string is appended to the overall ONIE version +# string. HW vendors can use this to appended their own versioning +# information to the base ONIE version string. +VENDOR_VERSION = delta_agcv208sv1_v1.0 + +# Vendor ID -- IANA Private Enterprise Number: +# http://www.iana.org/assignments/enterprise-numbers +# Open Compute Project IANA number +VENDOR_ID = 2254 + +# Enable the i2ctools and the onie-syseeprom command for this platform +I2CTOOLS_ENABLE = yes + + +# Set Linux kernel version +LINUX_VERSION = 4.9 +LINUX_MINOR_VERSION = 95 + +# Specify uClibc version +#UCLIBC_VERSION = 0.9.32.1 + +UEFI_ENABLE = yes + +FIRMWARE_UPDATE_ENABLE = yes + +IPMITOOL_ENABLE = yes +#------------------------------------------------------------------------------- +# +# Local Variables: +# mode: makefile-gmake +# End: |
