diff options
author | Peter Wu <lekensteyn@gmail.com> | 2013-08-09 17:17:59 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2014-10-15 21:26:29 +0200 |
commit | 55754e5441d1bb32d30d4174a524eaf2c1c18148 (patch) | |
tree | 4f207cc3e58c8dbbb090191a8f4977abe274f3a5 /sound | |
parent | 9db8a8bb98cf75b0a51d66f560c87028e93a8ed8 (diff) | |
download | linux-rtl-eeprom-3.17.tar.gz |
r8169: add ethtool eeprom change/dump featurertl-eeprom-3.17
This adds the ability to read and change EEPROM for 93C46/93C56 serial
EEPROM. Two-Wire serial interface and SPI are not supported. (Do not
even try this for SPI or other chips, it may break your hardware.)
Works with RTL8169SCL (driver detects RTL8169sb), with some quirks. Not
sure if it is a hardware bug, but to be able to read EEPROM, one has
to write something, e.g.:
printf '\0\0' | ethtool -E eth0 magic 0x8169 offset 0x40 length 2
Otherwise, only zeroes are read. Another note for this NIC, one has to
"enable" the eeprom by writing to it (as shown above) and then make the
NIC to reload the contents from firmware such that the PCI ID gets
detected correctly (10ec:8169 instead of 10ec:8129). Reload by writing
0x40 (Auto-load) to register 0x50 (9346CR):
printf '\x40' | dd seek=80 bs=1 \
of=/sys/bus/pci/devices/0000:03:00.0/resource0
Then detach and rescan the PCI device (use `lspci -tv` to find parent):
echo 1 > /sys/bus/pci/devices/0000\:03\:00.0/remove
echo 1 > /sys/bus/pci/devices/0000\:02\:00.0/rescan
After this, this RTL8169sb PCI GbE NIC appears to work.
On a second RTL8188E onboard GbE chip, EEPROM cannot be dumped, writing
also does nothing. Here, reads all return FFs.
Signed-off-by: Peter Wu <lekensteyn@gmail.com>
Diffstat (limited to 'sound')
0 files changed, 0 insertions, 0 deletions