linux-stable/drivers/misc
Parker Newman d0f2889ec5 misc: eeprom: eeprom_93cx6: Add quirk for extra read clock cycle
[ Upstream commit 7738a7ab9d ]

Add a quirk similar to eeprom_93xx46 to add an extra clock cycle before
reading data from the EEPROM.

The 93Cx6 family of EEPROMs output a "dummy 0 bit" between the writing
of the op-code/address from the host to the EEPROM and the reading of
the actual data from the EEPROM.

More info can be found on page 6 of the AT93C46 datasheet (linked below).
Similar notes are found in other 93xx6 datasheets.

In summary the read operation for a 93Cx6 EEPROM is:
Write to EEPROM:	110[A5-A0]	(9 bits)
Read from EEPROM:	0[D15-D0]	(17 bits)

Where:
	110 is the start bit and READ OpCode
	[A5-A0] is the address to read from
	0 is a "dummy bit" preceding the actual data
	[D15-D0] is the actual data.

Looking at the READ timing diagrams in the 93Cx6 datasheets the dummy
bit should be clocked out on the last address bit clock cycle meaning it
should be discarded naturally.

However, depending on the hardware configuration sometimes this dummy
bit is not discarded. This is the case with Exar PCI UARTs which require
an extra clock cycle between sending the address and reading the data.

Datasheet: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-5193-SEEPROM-AT93C46D-Datasheet.pdf
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Parker Newman <pnewman@connecttech.com>
Link: https://lore.kernel.org/r/0f23973efefccd2544705a0480b4ad4c2353e407.1727880931.git.pnewman@connecttech.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-14 19:51:42 +01:00
..
altera-stapl
bcm-vk
c2port
cardreader misc: rtsx: Fix some platforms can not boot and move the l1ss judgment to probe 2023-10-06 13:18:21 +02:00
cb710
cxl cxl: Fix refcount leak in cxl_calc_capp_routing 2022-12-31 13:14:35 +01:00
echo
eeprom misc: eeprom: eeprom_93cx6: Add quirk for extra read clock cycle 2024-12-14 19:51:42 +01:00
genwqe
habanalabs habanalabs/gaudi: mask constant value before cast 2022-08-25 11:40:36 +02:00
ibmasm
lis3lv02d
lkdtm drivers: lkdtm: fix clang -Wformat warning 2024-02-23 08:54:59 +01:00
mei mei: demote client disconnect warning on suspend to debug 2024-07-27 10:46:10 +02:00
ocxl ocxl: fix pci device refcount leak when calling get_function_0() 2022-12-31 13:14:29 +01:00
pvpanic misc/pvpanic-pci: register attributes via pci_driver 2024-07-05 09:14:10 +02:00
sgi-gru misc: sgi-gru: Don't disable preemption in GRU driver 2024-11-08 16:25:53 +01:00
sgi-xp
ti-st misc: st_core: Do not call kfree_skb() under spin_lock_irqsave() 2023-11-20 11:08:25 +01:00
uacce uacce: Handle parent device removal or parent driver module rmmod 2022-08-25 11:40:34 +02:00
vmw_vmci VMCI: Fix use-after-free when removing resource in vmci_resource_remove() 2024-09-12 11:07:51 +02:00
ad525x_dpot-i2c.c
ad525x_dpot-spi.c
ad525x_dpot.c
ad525x_dpot.h
apds990x.c misc: apds990x: Fix missing pm_runtime_disable() 2024-12-14 19:51:10 +01:00
apds9802als.c
atmel-ssc.c misc: atmel-ssc: Fix IRQ check in ssc_probe 2022-06-22 14:22:00 +02:00
bh1770glc.c
cs5535-mfgpt.c
ds1682.c
dummy-irq.c
dw-xdata-pcie.c
enclosure.c
fastrpc.c misc: fastrpc: Mark all sessions as invalid in cb_remove 2024-02-23 08:55:06 +01:00
gehc-achc.c
hi6421v600-irq.c
hisi_hikey_usb.c
hmc6352.c
hpilo.c
hpilo.h
ibmvmc.c
ibmvmc.h
ics932s401.c
isl29003.c
isl29020.c
Kconfig
kgdbts.c
lattice-ecp3-config.c
Makefile
pch_phub.c
pci_endpoint_test.c misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller 2023-11-28 16:56:19 +00:00
phantom.c
qcom-coincell.c
sram-exec.c
sram.c
sram.h
tifm_7xx1.c misc: tifm: fix possible memory leak in tifm_7xx1_switch_media() 2022-12-31 13:14:29 +01:00
tifm_core.c
tsl2550.c
vmw_balloon.c misc: vmw_balloon: fix memory leak with using debugfs_lookup() 2023-03-11 13:57:38 +01:00
xilinx_sdfec.c