Victor Ding has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/56476 )
Change subject: mec1308: remove MEC1308 EC programmer ......................................................................
mec1308: remove MEC1308 EC programmer
Last known device that uses MEC1308 Embedded Controller has reached Auto Update Expiration (AUE) a.k.a. end-of-life.
BUG=none BRANCH=none TEST=builds and ninja test passes
Signed-off-by: Victor Ding victording@google.com Change-Id: I535b6380846734c999474519e9e60a73eb6a2ec4 --- M Makefile D mec1308.c M meson.build M meson_options.txt M programmer.h M programmer_table.c M tests/init_shutdown.c M tests/tests.c M tests/tests.h 9 files changed, 2 insertions(+), 602 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/76/56476/1
diff --git a/Makefile b/Makefile index 96b8c1b..f83dcc6 100644 --- a/Makefile +++ b/Makefile @@ -231,7 +231,7 @@ # For now we disable all PCI-based programmers on Windows/MinGW (no libpci). $(call mark_unsupported,$(DEPENDS_ON_LIBPCI)) # And programmers that need raw access. -$(call mark_unsupported,CONFIG_MEC1308 CONFIG_RAYER_SPI) +$(call mark_unsupported,CONFIG_RAYER_SPI)
else # No MinGW
@@ -253,8 +253,6 @@ $(call mark_unsupported,CONFIG_BUSPIRATE_SPI CONFIG_SERPROG CONFIG_PONY_SPI) # Dediprog, Developerbox, USB-Blaster, PICkit2, CH341A and FT2232 are not supported with libpayload (missing libusb support). $(call mark_unsupported,$(DEPENDS_ON_LIBUSB1) $(DEPENDS_ON_LIBFTDI) $(DEPENDS_ON_LIBJAYLINK)) -# Odd ones. (FIXME: why?) -$(call mark_unsupported,CONFIG_MEC1308) endif
# Android is handled internally as separate OS, but it supports about the same drivers as Linux. @@ -295,7 +293,7 @@ ifneq ($(ARCH), x86) $(call mark_unsupported,CONFIG_NIC3COM CONFIG_NICREALTEK CONFIG_NICNATSEMI) $(call mark_unsupported,CONFIG_RAYER_SPI CONFIG_ATAHPT CONFIG_ATAPROMISE) -$(call mark_unsupported,CONFIG_SATAMV CONFIG_MEC1308) +$(call mark_unsupported,CONFIG_SATAMV) endif
# Additionally disable all drivers needing raw access (memory, PCI, port I/O) @@ -383,9 +381,6 @@ # Always enable FT2232 SPI dongles for now. CONFIG_FT2232_SPI ?= yes
-# Microchip MEC1308 Embedded Controller -CONFIG_MEC1308 ?= yes - # Always enable Altera USB-Blaster dongles for now. CONFIG_USBBLASTER_SPI ?= yes
@@ -529,12 +524,6 @@ endif endif
-ifeq ($(CONFIG_MEC1308), yes) -FEATURE_CFLAGS += -D'CONFIG_MEC1308=1' -PROGRAMMER_OBJS += mec1308.o -NEED_RAW_ACCESS += CONFIG_MEC1308 -endif - ifeq ($(CONFIG_SERPROG), yes) FEATURE_CFLAGS += -D'CONFIG_SERPROG=1' PROGRAMMER_OBJS += serprog.o diff --git a/mec1308.c b/mec1308.c deleted file mode 100644 index e9c6214..0000000 --- a/mec1308.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * This file is part of the flashrom project. - * - * Copyright (C) 2010-2020, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License ("GPL") version 2 as published by the Free - * Software Foundation. - */ - -#if defined(__i386__) || defined(__x86_64__) -#include <inttypes.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include "flash.h" -#include "hwaccess.h" -#include "chipdrivers.h" -#include "programmer.h" -#include "spi.h" - -#define MEC1308_SIO_PORT1 0x2e -#define MEC1308_SIO_PORT2 0x4e -#define MEC1308_SIO_ENTRY_KEY 0x55 -#define MEC1308_SIO_EXIT_KEY 0xaa - -#define MEC1308_SIOCFG_LDN 0x07 /* LDN Bank Selector */ -#define MEC1308_DEVICE_ID_REG 0x20 /* Device ID Register */ -#define MEC1308_DEVICE_ID_VAL 0x4d /* Device ID Value for MEC1308 */ -#define MEC1310_DEVICE_ID_VAL 0x04 /* Device ID Value for MEC1310 */ -#define MEC1308_DEVICE_REV 0x21 /* Device Revision ID Register */ - -#define MEC1308_MBX_CMD 0x82 /* mailbox command register offset */ -#define MEC1308_MBX_EXT_CMD 0x83 /* mailbox ext. command reg offset */ -#define MEC1308_MBX_DATA_START 0x84 /* first mailbox data register offset */ -#define MEC1308_MBX_DATA_END 0x91 /* last mailbox data register offset */ - -static unsigned int mbx_data; /* Mailbox register interface data address*/ - -/* - * These command codes depend on EC firmware. The ones listed below are input - * using the mailbox interface, though others may be input using the ACPI - * interface. Some commands also have an output value (ie pass/failure code) - * which EC writes to the mailbox command register after completion. - */ -#define MEC1308_CMD_SMI_ENABLE 0x84 -#define MEC1308_CMD_SMI_DISABLE 0x85 -#define MEC1308_CMD_ACPI_ENABLE 0x86 -#define MEC1308_CMD_ACPI_DISABLE 0x87 - -/* - * Passthru commands are also input using the mailbox interface. Passthru mode - * enter/start/end commands are special since they require a command word to - * be written to the data registers. Other passthru commands are performed - * after passthru mode has been started. - * - * Multiple passthru mode commands may be issued before ending passthru mode. - * You do not need to enter, start, and end passthru mode for each SPI - * command. However, other mailbox commands might not work when passthru mode - * is enabled. For example, you may read all SPI chip content while in passthru - * mode, but you should exit passthru mode before performing other EC commands - * such as reading fan speed. - */ -#define MEC1308_CMD_PASSTHRU 0x55 /* force EC to process word */ -#define MEC1308_CMD_PASSTHRU_SUCCESS 0xaa /* success code for passthru */ -#define MEC1308_CMD_PASSTHRU_FAIL 0xfe /* failure code for passthru */ -#define MEC1308_CMD_PASSTHRU_ENTER "PathThruMode" /* not a typo... */ -#define MEC1308_CMD_PASSTHRU_START "Start" -#define MEC1308_CMD_PASSTHRU_EXIT "End_Mode" -#define MEC1308_CMD_PASSTHRU_CS_EN 0xf0 /* chip-select enable */ -#define MEC1308_CMD_PASSTHRU_CS_DIS 0xf1 /* chip-select disable */ -#define MEC1308_CMD_PASSTHRU_SEND 0xf2 /* send byte from data0 */ -#define MEC1308_CMD_PASSTHRU_READ 0xf3 /* read byte, place in data0 */ - -typedef struct -{ - unsigned int in_sio_cfgmode; - unsigned int mbx_idx; /* Mailbox register interface index address */ - unsigned int mbx_data; /* Mailbox register interface data address*/ -} mec1308_data_t; - -static void mec1308_sio_enter(mec1308_data_t *ctx_data, uint16_t port) -{ - if (ctx_data->in_sio_cfgmode) - return; - - OUTB(MEC1308_SIO_ENTRY_KEY, port); - ctx_data->in_sio_cfgmode = 1; -} - -static void mec1308_sio_exit(mec1308_data_t *ctx_data, uint16_t port) -{ - if (!ctx_data->in_sio_cfgmode) - return; - - OUTB(MEC1308_SIO_EXIT_KEY, port); - ctx_data->in_sio_cfgmode = 0; -} - -/** probe for super i/o index - * @port: allocated buffer to store port - * - * returns 0 to indicate success, <0 to indicate error - */ -static int mec1308_get_sio_index(mec1308_data_t *ctx_data, uint16_t *port) -{ - uint16_t ports[] = { MEC1308_SIO_PORT1, - MEC1308_SIO_PORT2, - }; - size_t i; - static uint16_t port_internal, port_found = 0; - - if (port_found) { - *port = port_internal; - return 0; - } - - if (rget_io_perms()) - return -1; - - for (i = 0; i < ARRAY_SIZE(ports); i++) { - uint8_t tmp8; - - /* - * Only after config mode has been successfully entered will the - * index port will read back the last value written to it. - * So we will attempt to enter config mode, set the index - * register, and see if the index register retains the value. - * - * Note: It seems to work "best" when using a device ID register - * as the index and reading from the data port before reading - * the index port. - */ - mec1308_sio_enter(ctx_data, ports[i]); - OUTB(MEC1308_DEVICE_ID_REG, ports[i]); - tmp8 = INB(ports[i] + 1); - tmp8 = INB(ports[i]); - if ((tmp8 != MEC1308_DEVICE_ID_REG)) { - ctx_data->in_sio_cfgmode = 0; - continue; - } - - port_internal = ports[i]; - port_found = 1; - break; - } - - if (!port_found) { - msg_cdbg("\nfailed to obtain super i/o index\n"); - return -1; - } - - msg_cdbg("\nsuper i/o index = 0x%04x\n", port_internal); - *port = port_internal; - return 0; -} - -static uint8_t mbx_read(mec1308_data_t *ctx_data, uint8_t idx) -{ - OUTB(idx, ctx_data->mbx_idx); - return INB(mbx_data); -} - -static int mbx_wait(mec1308_data_t *ctx_data) -{ - int i; - int max_attempts = 10000; - int rc = 0; - - for (i = 0; mbx_read(ctx_data, MEC1308_MBX_CMD); i++) { - if (i == max_attempts) { - rc = 1; - break; - } - /* FIXME: This delay adds determinism to the delay period. It - was chosen arbitrarily thru some experiments. */ - programmer_delay(2); - } - - return rc; -} - -static int mbx_write(mec1308_data_t *ctx_data, uint8_t idx, uint8_t data) -{ - int rc = 0; - - if (idx == MEC1308_MBX_CMD && mbx_wait(ctx_data)) { - msg_perr("%s: command register not clear\n", __func__); - return 1; - } - - OUTB(idx, ctx_data->mbx_idx); - OUTB(data, mbx_data); - - if (idx == MEC1308_MBX_CMD) - rc = mbx_wait(ctx_data); - - return rc; -} - -static void mbx_clear(mec1308_data_t *ctx_data) -{ - int reg; - - for (reg = MEC1308_MBX_DATA_START; reg < MEC1308_MBX_DATA_END; reg++) - mbx_write(ctx_data, reg, 0x00); - mbx_write(ctx_data, MEC1308_MBX_CMD, 0x00); -} - -static int mec1308_exit_passthru_mode(mec1308_data_t *ctx_data) -{ - uint8_t tmp8; - size_t i; - - /* exit passthru mode */ - for (i = 0; i < strlen(MEC1308_CMD_PASSTHRU_EXIT); i++) { - mbx_write(ctx_data, MEC1308_MBX_DATA_START + i, - MEC1308_CMD_PASSTHRU_EXIT[i]); - } - - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU)) { - msg_pdbg("%s(): exit passthru command timed out\n", __func__); - return 1; - } - - tmp8 = mbx_read(ctx_data, MEC1308_MBX_DATA_START); - msg_pdbg("%s: result: 0x%02x ", __func__, tmp8); - if (tmp8 == MEC1308_CMD_PASSTHRU_SUCCESS) { - msg_pdbg("(exited passthru mode)\n"); - } else if (tmp8 == MEC1308_CMD_PASSTHRU_FAIL) { - msg_pdbg("(failed to exit passthru mode)\n"); - } - - return 0; -} - -static int enter_passthru_mode(mec1308_data_t *ctx_data) -{ - uint8_t tmp8; - size_t i; - - /* - * Enter passthru mode. If the EC does not successfully enter passthru - * mode the first time, we'll clear the mailbox and issue the "exit - * passthru mode" command sequence up to 3 times or until it arrives in - * a known state. - * - * Note: This workaround was developed experimentally. - */ - for (i = 0; i < 3; i++) { - size_t j; - - msg_pdbg("%s(): entering passthru mode, attempt %d out of 3\n", - __func__, (int)(i + 1)); - for (j = 0; j < strlen(MEC1308_CMD_PASSTHRU_ENTER); j++) { - mbx_write(ctx_data, MEC1308_MBX_DATA_START + j, - MEC1308_CMD_PASSTHRU_ENTER[j]); - } - - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU)) - msg_pdbg("%s(): enter passthru command timed out\n", - __func__); - - tmp8 = mbx_read(ctx_data, MEC1308_MBX_DATA_START); - if (tmp8 == MEC1308_CMD_PASSTHRU_SUCCESS) - break; - - msg_pdbg("%s(): command failed, clearing data registers and " - "issuing full exit passthru command...\n", __func__); - mbx_clear(ctx_data); - mec1308_exit_passthru_mode(ctx_data); - } - - if (tmp8 != MEC1308_CMD_PASSTHRU_SUCCESS) { - msg_perr("%s(): failed to enter passthru mode, result=0x%02x\n", - __func__, tmp8); - return 1; - } - - msg_pdbg("%s(): enter passthru mode return code: 0x%02x\n", - __func__, tmp8); - - /* start passthru mode */ - for (i = 0; i < strlen(MEC1308_CMD_PASSTHRU_START); i++) - mbx_write(ctx_data, MEC1308_MBX_DATA_START + i, - MEC1308_CMD_PASSTHRU_START[i]); - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU)) { - msg_pdbg("%s(): start passthru command timed out\n", __func__); - return 1; - } - tmp8 = mbx_read(ctx_data, MEC1308_MBX_DATA_START); - if (tmp8 != MEC1308_CMD_PASSTHRU_SUCCESS) { - msg_perr("%s(): failed to enter passthru mode, result=%02x\n", - __func__, tmp8); - return 1; - } - msg_pdbg("%s(): start passthru mode return code: 0x%02x\n", - __func__, tmp8); - - return 0; -} - -static int mec1308_shutdown(void *data) -{ - mec1308_data_t *ctx_data = (mec1308_data_t *)data; - - /* Exit passthru mode before performing commands which do not affect - the SPI ROM */ - mec1308_exit_passthru_mode(ctx_data); - - /* Re-enable SMI and ACPI. - FIXME: is there an ordering dependency? */ - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_SMI_ENABLE)) - msg_pdbg("%s: unable to re-enable SMI\n", __func__); - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_ACPI_ENABLE)) - msg_pdbg("%s: unable to re-enable ACPI\n", __func__); - - free(data); - return 0; -} - -static int mec1308_chip_select(mec1308_data_t *ctx_data) -{ - return mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU_CS_EN); -} - -static int mec1308_chip_deselect(mec1308_data_t *ctx_data) -{ - return mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU_CS_DIS); -} - -/* - * MEC1308 will not allow direct access to SPI chip from host if EC is - * connected to LPC bus. This function will forward commands issued thru - * mailbox interface to the SPI flash chip. - */ -static int mec1308_spi_send_command(const struct flashctx *flash, unsigned int writecnt, - unsigned int readcnt, - const unsigned char *writearr, - unsigned char *readarr) -{ - int rc = 0; - size_t i; - mec1308_data_t *ctx_data = (mec1308_data_t *)flash->mst->spi.data; - - if (mec1308_chip_select(ctx_data)) - return 1; - - for (i = 0; i < writecnt; i++) { - if (mbx_write(ctx_data, MEC1308_MBX_DATA_START, writearr[i]) || - mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU_SEND)) { - msg_pdbg("%s: failed to issue send command\n",__func__); - rc = 1; - goto mec1308_spi_send_command_exit; - } - } - - for (i = 0; i < readcnt; i++) { - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_PASSTHRU_READ)) { - msg_pdbg("%s: failed to issue read command\n",__func__); - rc = 1; - goto mec1308_spi_send_command_exit; - } - readarr[i] = mbx_read(ctx_data, MEC1308_MBX_DATA_START); - } - -mec1308_spi_send_command_exit: - rc |= mec1308_chip_deselect(ctx_data); - return rc; -} - -static const struct spi_master spi_master_mec1308 = { - .max_data_read = 256, /* FIXME: should be MAX_DATA_READ_UNLIMITED? */ - .max_data_write = 256, /* FIXME: should be MAX_DATA_WRITE_UNLIMITED? */ - .command = mec1308_spi_send_command, - .multicommand = default_spi_send_multicommand, - .read = default_spi_read, - .write_256 = default_spi_write_256, - .write_aai = default_spi_write_aai, - .shutdown = mec1308_shutdown, -}; - -static int check_params(void) -{ - int ret = 0; - char *const p = extract_programmer_param("type"); - if (p && strcmp(p, "ec")) { - msg_pdbg("mec1308 only supports "ec" type devices\n"); - ret = 1; - } - - free(p); - return ret; -} - -static int mec1308_init(void) -{ - uint16_t sio_port; - uint8_t device_id; - uint8_t tmp8; - mec1308_data_t *ctx_data = NULL; - - msg_pdbg("%s(): entered\n", __func__); - - ctx_data = calloc(1, sizeof(mec1308_data_t)); - if (!ctx_data) { - msg_perr("Unable to allocate space for extra context data.\n"); - return 1; - } - - if (check_params()) - goto init_err_exit; - - if (mec1308_get_sio_index(ctx_data, &sio_port) < 0) { - msg_pdbg("MEC1308 not found (probe failed).\n"); - goto init_err_exit; - } - device_id = sio_read(sio_port, MEC1308_DEVICE_ID_REG); - switch(device_id) { - case MEC1308_DEVICE_ID_VAL: - msg_pdbg("Found EC: MEC1308 (ID:0x%02x,Rev:0x%02x) on " - "sio_port:0x%x.\n", device_id, - sio_read(sio_port, MEC1308_DEVICE_REV), sio_port); - break; - case MEC1310_DEVICE_ID_VAL: - msg_pdbg("Found EC: MEC1310 (ID:0x%02x,Rev:0x%02x) on " - "sio_port:0x%x.\n", device_id, - sio_read(sio_port, MEC1308_DEVICE_REV), sio_port); - break; - default: - msg_pdbg("MEC1308 not found\n"); - goto init_err_exit; - } - - /* - * setup mailbox interface at LDN 9 - */ - sio_write(sio_port, MEC1308_SIOCFG_LDN, 0x09); - tmp8 = sio_read(sio_port, 0x30); - tmp8 |= 1; - sio_write(sio_port, 0x30, tmp8); /* activate logical device */ - - ctx_data->mbx_idx = (unsigned int)sio_read(sio_port, 0x60) << 8 | - sio_read(sio_port, 0x61); - mbx_data = ctx_data->mbx_idx + 1; - msg_pdbg("%s: mbx_idx: 0x%04x, mbx_data: 0x%04x\n", - __func__, ctx_data->mbx_idx, mbx_data); - - /* Exit Super I/O config mode */ - mec1308_sio_exit(ctx_data, sio_port); - - /* Now that we can read the mailbox, we will wait for any remaining - * command to finish.*/ - if (mbx_wait(ctx_data) != 0) { - msg_perr("%s: mailbox is not available\n", __func__); - goto init_err_exit; - } - - /* Further setup -- disable SMI and ACPI. - FIXME: is there an ordering dependency? */ - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_ACPI_DISABLE)) { - msg_pdbg("%s: unable to disable ACPI\n", __func__); - goto init_err_exit; - } - - if (mbx_write(ctx_data, MEC1308_MBX_CMD, MEC1308_CMD_SMI_DISABLE)) { - msg_pdbg("%s: unable to disable SMI\n", __func__); - goto init_err_exit; - } - - /* - * Enter SPI Pass-Thru Mode after commands which do not require access - * to SPI ROM are complete. We'll start by doing the exit_passthru_mode - * sequence, which is benign if the EC is already in passthru mode. - */ - mec1308_exit_passthru_mode(ctx_data); - - if (enter_passthru_mode(ctx_data)) - goto init_err_cleanup_exit; - - internal_buses_supported |= BUS_LPC; /* for LPC <--> SPI bridging */ - - return register_spi_master(&spi_master_mec1308, ctx_data); - -init_err_cleanup_exit: - mec1308_shutdown(ctx_data); - return 1; - -init_err_exit: - free(ctx_data); - return 1; -} - -const struct programmer_entry programmer_mec1308 = { - .name = "mec1308", - .type = OTHER, - .devs.note = "Microchip MEC1308 Embedded Controller.\n", - .init = mec1308_init, - .map_flash_region = fallback_map, - .unmap_flash_region = fallback_unmap, - .delay = internal_delay, -}; - -#endif diff --git a/meson.build b/meson.build index f08ec24..fcb11c6 100644 --- a/meson.build +++ b/meson.build @@ -48,7 +48,6 @@ config_it8212 = get_option('config_it8212') config_linux_mtd = get_option('config_linux_mtd') config_linux_spi = get_option('config_linux_spi') -config_mec1308 = get_option('config_mec1308') config_mstarddc_spi = get_option('config_mstarddc_spi') config_nic3com = get_option('config_nic3com') config_nicintel_eeprom = get_option('config_nicintel_eeprom') @@ -224,10 +223,6 @@ srcs += 'linux_spi.c' cargs += '-DCONFIG_LINUX_SPI=1' endif -if config_mec1308 - srcs += 'mec1308.c' - cargs += '-DCONFIG_MEC1308=1' -endif if config_mstarddc_spi srcs += 'mstarddc_spi.c' cargs += '-DCONFIG_MSTARDDC_SPI=1' diff --git a/meson_options.txt b/meson_options.txt index fa0c90a..588ed5b 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -23,7 +23,6 @@ option('config_it8212', type : 'boolean', value : true, description : 'ITE IT8212F PATA') option('config_linux_mtd', type : 'boolean', value : true, description : 'Linux MTD interfaces') option('config_linux_spi', type : 'boolean', value : true, description : 'Linux spidev interfaces') -option('config_mec1308', type : 'boolean', value : true, description : 'Microchip MEC1308 Embedded Controller') option('config_mstarddc_spi', type : 'boolean', value : false, description : 'MSTAR DDC support') option('config_nic3com', type : 'boolean', value : true, description : '3Com NICs') option('config_nicintel_eeprom', type : 'boolean', value : true, description : 'EEPROM on Intel NICs') diff --git a/programmer.h b/programmer.h index 36bc8df..2df9af6 100644 --- a/programmer.h +++ b/programmer.h @@ -76,7 +76,6 @@ extern const struct programmer_entry programmer_linux_mtd; extern const struct programmer_entry programmer_linux_spi; extern const struct programmer_entry programmer_lspcon_i2c_spi; -extern const struct programmer_entry programmer_mec1308; extern const struct programmer_entry programmer_mstarddc_spi; extern const struct programmer_entry programmer_ni845x_spi; extern const struct programmer_entry programmer_nic3com; diff --git a/programmer_table.c b/programmer_table.c index 5bf3f1c..a7a2ad0 100644 --- a/programmer_table.c +++ b/programmer_table.c @@ -24,10 +24,6 @@ &programmer_dummy, #endif
-#if CONFIG_MEC1308 == 1 - &programmer_mec1308, -#endif - #if CONFIG_NIC3COM == 1 &programmer_nic3com, #endif diff --git a/tests/init_shutdown.c b/tests/init_shutdown.c index 4e55680..20b3a4e 100644 --- a/tests/init_shutdown.c +++ b/tests/init_shutdown.c @@ -41,50 +41,6 @@ #endif }
-struct mec1308_io_state { - unsigned char outb_val; -}; - -void mec1308_outb(void *state, unsigned char value, unsigned short port) -{ - struct mec1308_io_state *io_state = state; - - io_state->outb_val = value; -} - -unsigned char mec1308_inb(void *state, unsigned short port) -{ - struct mec1308_io_state *io_state = state; - - return ((port == 0x2e /* MEC1308_SIO_PORT1 */ - || port == 0x4e /* MEC1308_SIO_PORT2 */) - ? 0x20 /* MEC1308_DEVICE_ID_REG */ - : ((io_state->outb_val == 0x84 /* MEC1308_MBX_DATA_START */) - ? 0xaa /* MEC1308_CMD_PASSTHRU_SUCCESS */ - : 0)); -} - -void mec1308_init_and_shutdown_test_success(void **state) -{ -#if CONFIG_MEC1308 == 1 - struct mec1308_io_state mec1308_io_state = { 0 }; - const struct io_mock mec1308_io = { - .state = &mec1308_io_state, - .outb = mec1308_outb, - .inb = mec1308_inb, - }; - - io_mock_register(&mec1308_io); - - will_return_always(__wrap_sio_read, 0x4d); /* MEC1308_DEVICE_ID_VAL */ - run_lifecycle(state, &programmer_mec1308, ""); - - io_mock_register(NULL); -#else - skip(); -#endif -} - void linux_spi_init_and_shutdown_test_success(void **state) { /* diff --git a/tests/tests.c b/tests/tests.c index 5834769..12b601b 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -171,7 +171,6 @@
const struct CMUnitTest init_shutdown_tests[] = { cmocka_unit_test(dummy_init_and_shutdown_test_success), - cmocka_unit_test(mec1308_init_and_shutdown_test_success), cmocka_unit_test(linux_spi_init_and_shutdown_test_success), }; ret |= cmocka_run_group_tests_name("init_shutdown.c tests", init_shutdown_tests, NULL, NULL); diff --git a/tests/tests.h b/tests/tests.h index e204910..16476c2 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -42,7 +42,6 @@
/* init_shutdown.c */ void dummy_init_and_shutdown_test_success(void **state); -void mec1308_init_and_shutdown_test_success(void **state); void linux_spi_init_and_shutdown_test_success(void **state);
#endif /* TESTS_H */