| /linux/drivers/misc/eeprom/ |
| H A D | eeprom_93cx6.c | 7 * Abstract: EEPROM reader routines for 93cx6 chipsets. 19 MODULE_DESCRIPTION("EEPROM 93cx6 chip driver"); 22 static inline void eeprom_93cx6_pulse_high(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_pulse_high() argument 24 eeprom->reg_data_clock = 1; in eeprom_93cx6_pulse_high() 25 eeprom->register_write(eeprom); in eeprom_93cx6_pulse_high() 35 static inline void eeprom_93cx6_pulse_low(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_pulse_low() argument 37 eeprom->reg_data_clock = 0; in eeprom_93cx6_pulse_low() 38 eeprom->register_write(eeprom); in eeprom_93cx6_pulse_low() 48 static void eeprom_93cx6_startup(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_startup() argument 53 eeprom->register_read(eeprom); in eeprom_93cx6_startup() [all …]
|
| H A D | Kconfig | 2 menu "EEPROM support" 44 after you configure the board init code to know about each eeprom 54 If you say yes here you get read-only support for the user EEPROM of 55 the Maxim MAX6874/5 EEPROM-programmable, quad power-supply 65 tristate "EEPROM 93CX6 support" 67 This is a driver for the EEPROM chipsets 93c46 and 93c66. 73 tristate "Microwire EEPROM 93XX46 support" 79 Driver for the microwire EEPROM chipsets 93xx46x. The driver 81 erase the whole EEPROM. 94 EEPROM 93XX46 driver. sysfs entries will be created for that [all …]
|
| H A D | idt_89hpesx.c | 12 * This driver primarily is developed to have an access to EEPROM device of 14 * operations from/to EEPROM, which is located at private (so called Master) 17 * /sys/bus/i2c/devices/<bus>-<devaddr>/eeprom 19 * User-space applications won't be able to write to the EEPROM sysfs-node. 65 * @eesize: Size of EEPROM in bytes (calculated from "idt,eecompatible") 66 * @eero: EEPROM Read-only flag 67 * @eeaddr: EEPROM custom address 69 * @inieecmd: Initial cmd value for EEPROM read/write operations 81 * @ee_file: EEPROM read/write sysfs-file 118 * struct idt_eeprom_seq - sequence of data to be read/written from/to EEPROM [all …]
|
| /linux/drivers/nvmem/ |
| H A D | lpc18xx_eeprom.c | 3 * NXP LPC18xx/LPC43xx EEPROM memory NVMEM driver 38 /* EEPROM device requires a ~1500 kHz clock (min 800 kHz, max 1600 kHz) */ 41 /* EEPROM requires 3 ms of erase/program time between each writing */ 54 static inline void lpc18xx_eeprom_writel(struct lpc18xx_eeprom_dev *eeprom, in lpc18xx_eeprom_writel() argument 57 writel(val, eeprom->reg_base + reg); in lpc18xx_eeprom_writel() 60 static inline u32 lpc18xx_eeprom_readl(struct lpc18xx_eeprom_dev *eeprom, in lpc18xx_eeprom_readl() argument 63 return readl(eeprom->reg_base + reg); in lpc18xx_eeprom_readl() 66 static int lpc18xx_eeprom_busywait_until_prog(struct lpc18xx_eeprom_dev *eeprom) in lpc18xx_eeprom_busywait_until_prog() argument 71 /* Wait until EEPROM program operation has finished */ in lpc18xx_eeprom_busywait_until_prog() 75 val = lpc18xx_eeprom_readl(eeprom, LPC18XX_EEPROM_INTSTAT); in lpc18xx_eeprom_busywait_until_prog() [all …]
|
| H A D | rave-sp-eeprom.c | 4 * EEPROM driver for RAVE SP 18 * enum rave_sp_eeprom_access_type - Supported types of EEPROM access 20 * @RAVE_SP_EEPROM_WRITE: EEPROM write 21 * @RAVE_SP_EEPROM_READ: EEPROM read 29 * enum rave_sp_eeprom_header_size - EEPROM command header sizes 31 * @RAVE_SP_EEPROM_HEADER_SMALL: EEPROM header size for "small" devices (< 8K) 32 * @RAVE_SP_EEPROM_HEADER_BIG: EEPROM header size for "big" devices (> 8K) 43 * struct rave_sp_eeprom_page - RAVE SP EEPROM page 59 * struct rave_sp_eeprom - RAVE SP EEPROM device 62 * @mutex: Lock protecting access to EEPROM [all …]
|
| /linux/drivers/i2c/ |
| H A D | i2c-slave-eeprom.c | 3 * I2C slave mode EEPROM simulator 9 * this driver does not support simulating EEPROM types which take more than 48 struct eeprom_data *eeprom = i2c_get_clientdata(client); in i2c_slave_eeprom_slave_cb() local 52 if (eeprom->idx_write_cnt < eeprom->num_address_bytes) { in i2c_slave_eeprom_slave_cb() 53 if (eeprom->idx_write_cnt == 0) in i2c_slave_eeprom_slave_cb() 54 eeprom->buffer_idx = 0; in i2c_slave_eeprom_slave_cb() 55 eeprom->buffer_idx = *val | (eeprom->buffer_idx << 8); in i2c_slave_eeprom_slave_cb() 56 eeprom->idx_write_cnt++; in i2c_slave_eeprom_slave_cb() 58 if (!eeprom->read_only) { in i2c_slave_eeprom_slave_cb() 59 spin_lock(&eeprom->buffer_lock); in i2c_slave_eeprom_slave_cb() [all …]
|
| /linux/drivers/net/wireless/mediatek/mt7601u/ |
| H A D | eeprom.c | 13 #include "eeprom.h" 51 /* Parts of eeprom not in the usage map (0x80-0xc0,0xf0) in mt7601u_efuse_read() 90 …dev_err(dev->dev, "Error: your device needs default EEPROM file and this driver doesn't support it… in mt7601u_efuse_physical_size_check() 98 mt7601u_has_tssi(struct mt7601u_dev *dev, u8 *eeprom) in mt7601u_has_tssi() argument 100 u16 nic_conf1 = get_unaligned_le16(eeprom + MT_EE_NIC_CONF_1); in mt7601u_has_tssi() 106 mt7601u_set_chip_cap(struct mt7601u_dev *dev, u8 *eeprom) in mt7601u_set_chip_cap() argument 108 u16 nic_conf0 = get_unaligned_le16(eeprom + MT_EE_NIC_CONF_0); in mt7601u_set_chip_cap() 109 u16 nic_conf1 = get_unaligned_le16(eeprom + MT_EE_NIC_CONF_1); in mt7601u_set_chip_cap() 114 dev->ee->tssi_enabled = mt7601u_has_tssi(dev, eeprom) && in mt7601u_set_chip_cap() 131 u8 *eeprom, u8 max_pwr) in mt7601u_set_channel_target_power() argument [all …]
|
| /linux/drivers/net/wireless/mediatek/mt76/mt7996/ |
| H A D | eeprom.c | 8 #include "eeprom.h" 12 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_check_eeprom() local 13 u16 val = get_unaligned_le16(eeprom); in mt7996_check_eeprom() 65 mt7996_eeprom_parse_stream(const u8 *eeprom, u8 band_idx, u8 *path, in mt7996_eeprom_parse_stream() argument 71 eeprom[MT_EE_WIFI_CONF + 2]); in mt7996_eeprom_parse_stream() 73 eeprom[MT_EE_WIFI_CONF + 3]); in mt7996_eeprom_parse_stream() 75 eeprom[MT_EE_WIFI_CONF + 5]); in mt7996_eeprom_parse_stream() 79 eeprom[MT_EE_WIFI_CONF + 2]); in mt7996_eeprom_parse_stream() 81 eeprom[MT_EE_WIFI_CONF + 4]); in mt7996_eeprom_parse_stream() 83 eeprom[MT_EE_WIFI_CONF + 5]); in mt7996_eeprom_parse_stream() [all …]
|
| /linux/drivers/media/usb/pvrusb2/ |
| H A D | pvrusb2-eeprom.c | 9 #include "pvrusb2-eeprom.h" 19 Read and analyze data in the eeprom. Use tveeprom to figure out 27 /* We seem to only be interested in the last 128 bytes of the EEPROM */ 30 /* Grab EEPROM contents, needed for direct method. */ 34 u8 *eeprom; in pvr2_eeprom_fetch() local 42 eeprom = kzalloc(EEPROM_SIZE, GFP_KERNEL); in pvr2_eeprom_fetch() 43 if (!eeprom) { in pvr2_eeprom_fetch() 45 "Failed to allocate memory required to read eeprom"); in pvr2_eeprom_fetch() 49 trace_eeprom("Value for eeprom addr from controller was 0x%x", in pvr2_eeprom_fetch() 52 /* Seems that if the high bit is set, then the *real* eeprom in pvr2_eeprom_fetch() [all …]
|
| /linux/drivers/net/wireless/mediatek/mt76/mt7915/ |
| H A D | eeprom.c | 7 #include "eeprom.h" 16 u8 *eeprom = mdev->eeprom.data; in mt7915_eeprom_load_precal() local 18 u32 size, val = eeprom[offs]; in mt7915_eeprom_load_precal() 49 u8 *eeprom = dev->mt76.eeprom.data; in mt7915_check_eeprom() local 50 u16 val = get_unaligned_le16(eeprom); in mt7915_check_eeprom() 100 u8 *eeprom = dev->mt76.eeprom.data; in mt7915_eeprom_load_default() local 114 memcpy(eeprom, fw->data, mt7915_eeprom_size(dev)); in mt7915_eeprom_load_default() 147 /* read eeprom data from efuse */ in mt7915_eeprom_load() 162 u8 *eeprom = dev->mt76.eeprom.data; in mt7915_eeprom_parse_band_config() local 166 val = eeprom[MT_EE_WIFI_CONF + band]; in mt7915_eeprom_parse_band_config() [all …]
|
| /linux/drivers/net/ethernet/intel/e1000e/ |
| H A D | nvm.c | 7 * e1000_raise_eec_clk - Raise EEPROM clock 9 * @eecd: pointer to the EEPROM 11 * Enable/Raise the EEPROM clock bit. 22 * e1000_lower_eec_clk - Lower EEPROM clock 24 * @eecd: pointer to the EEPROM 26 * Clear/Lower the EEPROM clock bit. 37 * e1000_shift_out_eec_bits - Shift data bits our to the EEPROM 39 * @data: data to send to the EEPROM 42 * We need to shift 'count' bits out to the EEPROM. So, the value in the 43 * "data" parameter will be shifted out to the EEPROM one bit at a time. [all …]
|
| /linux/include/linux/ |
| H A D | eeprom_93cx6.h | 10 Abstract: EEPROM reader datastructures for 93cx6 chipsets. 17 * EEPROM operation defines. 32 * for reading the eeprom data. 34 * @register_read: handler to read the eeprom register; 36 * @register_write: handler to write to the eeprom register by using 38 * @width: eeprom width, should be one of the PCI_EEPROM_WIDTH_* defines 39 * @quirks: eeprom or controller quirks 47 * and the eeprom_93cx6 handlers for reading the eeprom. 52 void (*register_read)(struct eeprom_93cx6 *eeprom); 53 void (*register_write)(struct eeprom_93cx6 *eeprom); [all …]
|
| /linux/drivers/net/ethernet/intel/igb/ |
| H A D | e1000_nvm.c | 11 * igb_raise_eec_clk - Raise EEPROM clock 13 * @eecd: pointer to the EEPROM 15 * Enable/Raise the EEPROM clock bit. 26 * igb_lower_eec_clk - Lower EEPROM clock 28 * @eecd: pointer to the EEPROM 30 * Clear/Lower the EEPROM clock bit. 41 * igb_shift_out_eec_bits - Shift data bits our to the EEPROM 43 * @data: data to send to the EEPROM 46 * We need to shift 'count' bits out to the EEPROM. So, the value in the 47 * "data" parameter will be shifted out to the EEPROM one bit at a time. [all …]
|
| /linux/drivers/net/wireless/intel/iwlwifi/dvm/ |
| H A D | eeprom.c | 16 /* EEPROM offset definitions */ 31 /* corresponding link offsets in EEPROM */ 67 /* SKU Capabilities (actual values from EEPROM definition) */ 76 /* radio config bits (actual values from EEPROM definition) */ 85 * EEPROM bands 87 * that they are stored in the EEPROM band information. Note 88 * that EEPROM bands aren't the same as mac80211 bands, and 89 * there are even special "ht40 bands" in the EEPROM. 148 /* EEPROM reading functions */ 150 static u16 iwl_eeprom_query16(const u8 *eeprom, size_t eeprom_size, int offset) in iwl_eeprom_query16() argument [all …]
|
| /linux/drivers/net/ethernet/intel/ixgbe/ |
| H A D | ixgbe_x540.c | 188 * ixgbe_init_eeprom_params_X540 - Initialize EEPROM params 191 * Initializes the EEPROM parameters ixgbe_eeprom_info within the 192 * ixgbe_hw struct in order to set up EEPROM access. 196 struct ixgbe_eeprom_info *eeprom = &hw->eeprom; in ixgbe_init_eeprom_params_X540() local 198 if (eeprom->type == ixgbe_eeprom_uninitialized) { in ixgbe_init_eeprom_params_X540() 202 eeprom->semaphore_delay = 10; in ixgbe_init_eeprom_params_X540() 203 eeprom->type = ixgbe_flash; in ixgbe_init_eeprom_params_X540() 207 eeprom->word_size = BIT(eeprom_size + in ixgbe_init_eeprom_params_X540() 210 hw_dbg(hw, "Eeprom params: type = %d, size = %d\n", in ixgbe_init_eeprom_params_X540() 211 eeprom->type, eeprom->word_size); in ixgbe_init_eeprom_params_X540() [all …]
|
| H A D | ixgbe_common.c | 134 * 10gig parts do not have a word in the EEPROM to determine the in ixgbe_setup_fc_generic() 494 * ixgbe_read_pba_string_generic - Reads part number string from EEPROM 496 * @pba_num: stores the part number string from the EEPROM 499 * Reads the part number string from the EEPROM. 515 ret_val = hw->eeprom.ops.read(hw, IXGBE_PBANUM0_PTR, &data); in ixgbe_read_pba_string_generic() 521 ret_val = hw->eeprom.ops.read(hw, IXGBE_PBANUM1_PTR, &pba_ptr); in ixgbe_read_pba_string_generic() 567 ret_val = hw->eeprom.ops.read(hw, pba_ptr, &length); in ixgbe_read_pba_string_generic() 589 ret_val = hw->eeprom.ops.read(hw, pba_ptr + offset, &data); in ixgbe_read_pba_string_generic() 609 * in order for the MAC address to have been loaded from the EEPROM into RAR0 708 /* Get MAC instance from EEPROM for configuring CS4227 */ in ixgbe_set_lan_id_multi_port_pcie() [all …]
|
| /linux/drivers/net/ethernet/intel/igc/ |
| H A D | igc_nvm.c | 8 * igc_poll_eerd_eewr_done - Poll for EEPROM read/write completion 10 * @ee_reg: EEPROM flag for polling 12 * Polls the EEPROM status bit for either read or write completion based 39 * igc_read_nvm_eerd - Reads EEPROM using EERD register 41 * @offset: offset of word in the EEPROM to read 43 * @data: word read from the EEPROM 45 * Reads a 16 bit word from the EEPROM using the EERD register. 105 * igc_validate_nvm_checksum - Validate EEPROM checksum 108 * Calculates the EEPROM checksum by reading/adding each word of the EEPROM 109 * and then verifies that the sum of the EEPROM is equal to 0xBABA. [all …]
|
| /linux/Documentation/devicetree/bindings/nvmem/ |
| H A D | zii,rave-sp-eeprom.yaml | 4 $id: http://devicetree.org/schemas/nvmem/zii,rave-sp-eeprom.yaml# 7 title: Zodiac Inflight Innovations RAVE EEPROM 13 RAVE SP EEPROM device is a "MFD cell" device exposing physical EEPROM 21 const: zii,rave-sp-eeprom 26 zii,eeprom-name: 29 Unique EEPROM identifier describing its function in the 43 eeprom@a4 { 44 compatible = "zii,rave-sp-eeprom"; 48 zii,eeprom-name = "main-eeprom";
|
| /linux/drivers/net/wireless/ralink/rt2x00/ |
| H A D | rt2800pci.c | 79 static void rt2800pci_eepromregister_read(struct eeprom_93cx6 *eeprom) in rt2800pci_eepromregister_read() argument 81 struct rt2x00_dev *rt2x00dev = eeprom->data; in rt2800pci_eepromregister_read() 86 eeprom->reg_data_in = !!rt2x00_get_field32(reg, E2PROM_CSR_DATA_IN); in rt2800pci_eepromregister_read() 87 eeprom->reg_data_out = !!rt2x00_get_field32(reg, E2PROM_CSR_DATA_OUT); in rt2800pci_eepromregister_read() 88 eeprom->reg_data_clock = in rt2800pci_eepromregister_read() 90 eeprom->reg_chip_select = in rt2800pci_eepromregister_read() 94 static void rt2800pci_eepromregister_write(struct eeprom_93cx6 *eeprom) in rt2800pci_eepromregister_write() argument 96 struct rt2x00_dev *rt2x00dev = eeprom->data; in rt2800pci_eepromregister_write() 99 rt2x00_set_field32(®, E2PROM_CSR_DATA_IN, !!eeprom->reg_data_in); in rt2800pci_eepromregister_write() 100 rt2x00_set_field32(®, E2PROM_CSR_DATA_OUT, !!eeprom->reg_data_out); in rt2800pci_eepromregister_write() [all …]
|
| /linux/drivers/net/wireless/mediatek/mt76/mt7615/ |
| H A D | eeprom.c | 10 #include "eeprom.h" 89 u16 val = get_unaligned_le16(dev->eeprom.data); in mt7615_check_eeprom() 104 u8 val, *eeprom = dev->mt76.eeprom.data; in mt7615_eeprom_parse_hw_band_cap() local 126 eeprom[MT_EE_WIFI_CONF]); in mt7615_eeprom_parse_hw_band_cap() 146 u8 *eeprom = dev->mt76.eeprom.data; in mt7615_eeprom_parse_hw_cap() local 154 eeprom[MT7663_EE_HW_CONF1]); in mt7615_eeprom_parse_hw_cap() 158 /* read tx-rx mask from eeprom */ in mt7615_eeprom_parse_hw_cap() 163 eeprom[MT_EE_NIC_CONF_0]); in mt7615_eeprom_parse_hw_cap() 277 u8 *eeprom = dev->mt76.eeprom.data; in mt7615_apply_cal_free_data() local 289 eeprom[ical[i]] = otp[ical[i]]; in mt7615_apply_cal_free_data() [all …]
|
| /linux/arch/arm/boot/dts/aspeed/ |
| H A D | aspeed-bmc-facebook-clemente.dts | 301 // HDD FRU EEPROM 302 eeprom@56 { 321 eeprom@53 { 339 eeprom@53 { 409 // IO Mezz 0 FRU EEPROM 410 eeprom@50 { 415 // OSFP 0 FRU EEPROM 416 eeprom@52 { 495 // E1.S Backplane HDD FRU EEPROM 496 eeprom@56 { [all …]
|
| /linux/drivers/net/wireless/mediatek/mt76/mt7603/ |
| H A D | eeprom.c | 5 #include "eeprom.h" 105 u8 *eeprom = dev->mt76.eeprom.data; in mt7603_apply_cal_free_data() local 109 if (!np || !of_property_read_bool(np, "mediatek,eeprom-merge-otp")) in mt7603_apply_cal_free_data() 121 eeprom[offset] = efuse[offset]; in mt7603_apply_cal_free_data() 139 u16 val = get_unaligned_le16(dev->eeprom.data); in mt7603_check_eeprom() 158 u8 *eeprom; in mt7603_eeprom_init() local 169 memcpy(dev->mt76.eeprom.data, dev->mt76.otp.data, in mt7603_eeprom_init() 173 eeprom = (u8 *)dev->mt76.eeprom.data; in mt7603_eeprom_init() 175 memcpy(dev->mphy.macaddr, eeprom + MT_EE_MAC_ADDR, ETH_ALEN); in mt7603_eeprom_init() 179 if (FIELD_GET(MT_EE_NIC_CONF_0_RX_PATH, eeprom[MT_EE_NIC_CONF_0]) == 1 || in mt7603_eeprom_init() [all …]
|
| /linux/drivers/net/ethernet/atheros/atl1e/ |
| H A D | atl1e_ethtool.c | 205 struct ethtool_eeprom *eeprom, u8 *bytes) in atl1e_get_eeprom() argument 214 if (eeprom->len == 0) in atl1e_get_eeprom() 220 eeprom->magic = hw->vendor_id | (hw->device_id << 16); in atl1e_get_eeprom() 222 first_dword = eeprom->offset >> 2; in atl1e_get_eeprom() 223 last_dword = (eeprom->offset + eeprom->len - 1) >> 2; in atl1e_get_eeprom() 237 memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 3), in atl1e_get_eeprom() 238 eeprom->len); in atl1e_get_eeprom() 245 struct ethtool_eeprom *eeprom, u8 *bytes) in atl1e_set_eeprom() argument 255 if (eeprom->len == 0) in atl1e_set_eeprom() 258 if (eeprom->magic != (hw->vendor_id | (hw->device_id << 16))) in atl1e_set_eeprom() [all …]
|
| /linux/drivers/gpu/drm/amd/amdgpu/ |
| H A D | amdgpu_eeprom.c | 35 /* EEPROM memory addresses are 19-bits long, which can 38 * "Device Type Identifier"--an I2C concept, which for EEPROM devices 39 * is hard-coded as 1010b, indicating that it is an EEPROM 43 * the EEPROM memory address. The format on the wire for EEPROM 52 * which is exactly the EEPROM memory address, or offset, 53 * in order to address up to 8 EEPROM devices on the I2C bus. 55 * For instance, a 2-Mbit I2C EEPROM part, addresses all its bytes, 67 * 2-Mbit EEPROM devices on the same bus, but see one contiguous 79 * That is, for an I2C EEPROM driver everything is controlled by 112 /* Set the EEPROM address we want to write to/read from. in __amdgpu_eeprom_xfer() [all …]
|
| /linux/drivers/net/usb/ |
| H A D | asix_common.c | 618 int asix_get_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom, in asix_get_eeprom() argument 626 if (eeprom->len == 0) in asix_get_eeprom() 629 eeprom->magic = AX_EEPROM_MAGIC; in asix_get_eeprom() 631 first_word = eeprom->offset >> 1; in asix_get_eeprom() 632 last_word = (eeprom->offset + eeprom->len - 1) >> 1; in asix_get_eeprom() 639 /* ax8817x returns 2 bytes from eeprom on read */ in asix_get_eeprom() 648 memcpy(data, (u8 *)eeprom_buff + (eeprom->offset & 1), eeprom->len); in asix_get_eeprom() 653 int asix_set_eeprom(struct net_device *net, struct ethtool_eeprom *eeprom, in asix_set_eeprom() argument 662 netdev_dbg(net, "write EEPROM len %d, offset %d, magic 0x%x\n", in asix_set_eeprom() 663 eeprom->len, eeprom->offset, eeprom->magic); in asix_set_eeprom() [all …]
|