Commit f5927d83 authored by Parker Newman's avatar Parker Newman Committed by Greg Kroah-Hartman
Browse files

serial: 8250_exar: Remove old exar_ee_read() and other unneeded code



Remove the old exar_ee_read() and associated helper functions.
Remove defines that are no longer needed after the switch to using the
eeprom_93cx6 driver.

Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarParker Newman <pnewman@connecttech.com>
Link: https://lore.kernel.org/r/ed756c48965a95ce3384ebb7fe2441b4928b4510.1727880931.git.pnewman@connecttech.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 85eb2e57
Loading
Loading
Loading
Loading
+0 −90
Original line number Diff line number Diff line
@@ -136,8 +136,6 @@
#define UART_EXAR_REGB_EECS		BIT(5)
#define UART_EXAR_REGB_EEDI		BIT(6)
#define UART_EXAR_REGB_EEDO		BIT(7)
#define UART_EXAR_REGB_EE_ADDR_SIZE	6
#define UART_EXAR_REGB_EE_DATA_SIZE	16

#define UART_EXAR_XR17C15X_PORT_OFFSET	0x200
#define UART_EXAR_XR17V25X_PORT_OFFSET	0x200
@@ -270,94 +268,6 @@ static inline u8 exar_read_reg(struct exar8250 *priv, unsigned int reg)
	return readb(priv->virt + reg);
}

static inline void exar_ee_select(struct exar8250 *priv)
{
	// Set chip select pin high to enable EEPROM reads/writes
	exar_write_reg(priv, UART_EXAR_REGB, UART_EXAR_REGB_EECS);
	// Min ~500ns delay needed between CS assert and EEPROM access
	udelay(1);
}

static inline void exar_ee_deselect(struct exar8250 *priv)
{
	exar_write_reg(priv, UART_EXAR_REGB, 0x00);
}

static inline void exar_ee_write_bit(struct exar8250 *priv, u8 bit)
{
	u8 value = UART_EXAR_REGB_EECS;

	if (bit)
		value |= UART_EXAR_REGB_EEDI;

	// Clock out the bit on the EEPROM interface
	exar_write_reg(priv, UART_EXAR_REGB, value);
	// 2us delay = ~500khz clock speed
	udelay(2);

	value |= UART_EXAR_REGB_EECK;

	exar_write_reg(priv, UART_EXAR_REGB, value);
	udelay(2);
}

static inline u8 exar_ee_read_bit(struct exar8250 *priv)
{
	u8 regb;
	u8 value = UART_EXAR_REGB_EECS;

	// Clock in the bit on the EEPROM interface
	exar_write_reg(priv, UART_EXAR_REGB, value);
	// 2us delay = ~500khz clock speed
	udelay(2);

	value |= UART_EXAR_REGB_EECK;

	exar_write_reg(priv, UART_EXAR_REGB, value);
	udelay(2);

	regb = exar_read_reg(priv, UART_EXAR_REGB);

	return (regb & UART_EXAR_REGB_EEDO ? 1 : 0);
}

/**
 * exar_ee_read() - Read a word from the EEPROM
 * @priv: Device's private structure
 * @ee_addr: Offset of EEPROM to read word from
 *
 * Read a single 16bit word from an Exar UART's EEPROM.
 * The type of the EEPROM is AT93C46D.
 *
 * Return: EEPROM word
 */
static u16 exar_ee_read(struct exar8250 *priv, u8 ee_addr)
{
	int i;
	u16 data = 0;

	exar_ee_select(priv);

	// Send read command (opcode 110)
	exar_ee_write_bit(priv, 1);
	exar_ee_write_bit(priv, 1);
	exar_ee_write_bit(priv, 0);

	// Send address to read from
	for (i = UART_EXAR_REGB_EE_ADDR_SIZE - 1; i >= 0; i--)
		exar_ee_write_bit(priv, ee_addr & BIT(i));

	// Read data 1 bit at a time starting with a dummy bit
	for (i = UART_EXAR_REGB_EE_DATA_SIZE; i >= 0; i--) {
		if (exar_ee_read_bit(priv))
			data |= BIT(i);
	}

	exar_ee_deselect(priv);

	return data;
}

static void exar_eeprom_93cx6_reg_read(struct eeprom_93cx6 *eeprom)
{
	struct exar8250 *priv = eeprom->data;