| /kernel/linux/linux-6.6/drivers/misc/eeprom/ |
| D | eeprom_93cx6.c | 7 * Abstract: EEPROM reader routines for 93cx6 chipsets. 18 MODULE_DESCRIPTION("EEPROM 93cx6 chip driver"); 21 static inline void eeprom_93cx6_pulse_high(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_pulse_high() argument 23 eeprom->reg_data_clock = 1; in eeprom_93cx6_pulse_high() 24 eeprom->register_write(eeprom); in eeprom_93cx6_pulse_high() 34 static inline void eeprom_93cx6_pulse_low(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_pulse_low() argument 36 eeprom->reg_data_clock = 0; in eeprom_93cx6_pulse_low() 37 eeprom->register_write(eeprom); in eeprom_93cx6_pulse_low() 47 static void eeprom_93cx6_startup(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_startup() argument 52 eeprom->register_read(eeprom); in eeprom_93cx6_startup() [all …]
|
| /kernel/linux/linux-5.10/drivers/misc/eeprom/ |
| D | eeprom_93cx6.c | 7 * Abstract: EEPROM reader routines for 93cx6 chipsets. 18 MODULE_DESCRIPTION("EEPROM 93cx6 chip driver"); 21 static inline void eeprom_93cx6_pulse_high(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_pulse_high() argument 23 eeprom->reg_data_clock = 1; in eeprom_93cx6_pulse_high() 24 eeprom->register_write(eeprom); in eeprom_93cx6_pulse_high() 34 static inline void eeprom_93cx6_pulse_low(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_pulse_low() argument 36 eeprom->reg_data_clock = 0; in eeprom_93cx6_pulse_low() 37 eeprom->register_write(eeprom); in eeprom_93cx6_pulse_low() 47 static void eeprom_93cx6_startup(struct eeprom_93cx6 *eeprom) in eeprom_93cx6_startup() argument 52 eeprom->register_read(eeprom); in eeprom_93cx6_startup() [all …]
|
| /kernel/linux/linux-6.6/drivers/nvmem/ |
| 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 …]
|
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/nvmem/ |
| 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 …]
|
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/i2c/ |
| 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 …]
|
| /kernel/linux/linux-6.6/drivers/i2c/ |
| 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 …]
|
| /kernel/linux/linux-6.6/drivers/net/wireless/mediatek/mt7601u/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/net/wireless/mediatek/mt7601u/ |
| 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 …]
|
| /kernel/linux/linux-6.6/drivers/media/usb/pvrusb2/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/media/usb/pvrusb2/ |
| 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 …]
|
| /kernel/linux/linux-6.6/drivers/net/wireless/mediatek/mt76/mt7996/ |
| 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() 32 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_eeprom_load_default() local 46 memcpy(eeprom, fw->data, MT7996_EEPROM_SIZE); in mt7996_eeprom_load_default() 78 /* read eeprom data from efuse */ in mt7996_eeprom_load() 114 u8 *eeprom = phy->dev->mt76.eeprom.data; in mt7996_eeprom_parse_band_config() local 115 u32 val = eeprom[MT_EE_WIFI_CONF]; in mt7996_eeprom_parse_band_config() 123 val = eeprom[MT_EE_WIFI_CONF + 1]; in mt7996_eeprom_parse_band_config() 152 u8 *eeprom = dev->mt76.eeprom.data; in mt7996_eeprom_parse_hw_cap() local [all …]
|
| /kernel/linux/linux-6.6/include/linux/ |
| 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(struct eeprom_93cx6 *eeprom): handler to 35 * read the eeprom register, this function should set all reg_* fields. 36 * @register_write(struct eeprom_93cx6 *eeprom): handler to 37 * write to the eeprom register by using all reg_* fields. 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. [all …]
|
| /kernel/linux/linux-6.6/drivers/net/wireless/mediatek/mt76/mt7915/ |
| D | eeprom.c | 7 #include "eeprom.h" 16 u8 *eeprom = mdev->eeprom.data; in mt7915_eeprom_load_precal() local 17 u32 val = eeprom[MT_EE_DO_PRE_CAL]; in mt7915_eeprom_load_precal() 38 u8 *eeprom = dev->mt76.eeprom.data; in mt7915_check_eeprom() local 39 u16 val = get_unaligned_le16(eeprom); in mt7915_check_eeprom() 89 u8 *eeprom = dev->mt76.eeprom.data; in mt7915_eeprom_load_default() local 103 memcpy(eeprom, fw->data, mt7915_eeprom_size(dev)); in mt7915_eeprom_load_default() 136 /* read eeprom data from efuse */ in mt7915_eeprom_load() 151 u8 *eeprom = dev->mt76.eeprom.data; in mt7915_eeprom_parse_band_config() local 155 val = eeprom[MT_EE_WIFI_CONF + band]; in mt7915_eeprom_parse_band_config() [all …]
|
| /kernel/linux/linux-5.10/include/linux/ |
| D | eeprom_93cx6.h | 10 Abstract: EEPROM reader datastructures for 93cx6 chipsets. 15 * EEPROM operation defines. 30 * for reading the eeprom data. 32 * @register_read(struct eeprom_93cx6 *eeprom): handler to 33 * read the eeprom register, this function should set all reg_* fields. 34 * @register_write(struct eeprom_93cx6 *eeprom): handler to 35 * write to the eeprom register by using all reg_* fields. 36 * @width: eeprom width, should be one of the PCI_EEPROM_WIDTH_* defines 44 * and the eeprom_93cx6 handlers for reading the eeprom. 49 void (*register_read)(struct eeprom_93cx6 *eeprom); [all …]
|
| /kernel/linux/linux-6.6/drivers/net/ethernet/intel/e1000e/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/net/ethernet/intel/e1000e/ |
| 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 …]
|
| /kernel/linux/linux-5.10/drivers/net/ethernet/intel/ixgb/ |
| D | ixgb_ee.c | 21 * Raises the EEPROM's clock input. 30 /* Raise the clock input to the EEPROM (by setting the SK bit), and then in ixgb_raise_clock() 40 * Lowers the EEPROM's clock input. 49 /* Lower the clock input to the EEPROM (by clearing the SK bit), and then in ixgb_lower_clock() 59 * Shift data bits out to the EEPROM. 62 * data - data to send to the EEPROM 73 /* We need to shift "count" bits out to the EEPROM. So, value in the in ixgb_shift_out_bits() 74 * "data" parameter will be shifted out to the EEPROM one bit at a time. in ixgb_shift_out_bits() 81 /* A "1" is shifted out to the EEPROM by setting bit "DI" to a "1", in ixgb_shift_out_bits() 83 * the clock input to the EEPROM). A "0" is shifted out to the EEPROM in ixgb_shift_out_bits() [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/nvmem/ |
| D | lpc1857-eeprom.txt | 1 * NXP LPC18xx EEPROM memory NVMEM driver 4 - compatible: Should be "nxp,lpc1857-eeprom" 8 - reg: EEPROM registers. 9 - mem: EEPROM address space. 12 - eeprom: EEPROM operating clock. 14 the EEPROM in reset. 15 - interrupts: Should contain EEPROM interrupt. 19 eeprom: eeprom@4000e000 { 20 compatible = "nxp,lpc1857-eeprom"; 25 clock-names = "eeprom";
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/nvmem/ |
| D | lpc1857-eeprom.txt | 1 * NXP LPC18xx EEPROM memory NVMEM driver 4 - compatible: Should be "nxp,lpc1857-eeprom" 8 - reg: EEPROM registers. 9 - mem: EEPROM address space. 12 - eeprom: EEPROM operating clock. 14 the EEPROM in reset. 15 - interrupts: Should contain EEPROM interrupt. 19 eeprom: eeprom@4000e000 { 20 compatible = "nxp,lpc1857-eeprom"; 25 clock-names = "eeprom";
|
| /kernel/linux/linux-5.10/drivers/net/ethernet/intel/igc/ |
| 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_acquire_nvm - Generic request for access to EEPROM 42 * Set the EEPROM access request bit and wait for EEPROM access grant bit. 44 * EEPROM access and return -IGC_ERR_NVM (-1). 74 * igc_release_nvm - Release exclusive access to EEPROM 77 * Stop any current commands to the EEPROM and clear the EEPROM request bit. 89 * igc_read_nvm_eerd - Reads EEPROM using EERD register 91 * @offset: offset of word in the EEPROM to read [all …]
|
| /kernel/linux/linux-6.6/drivers/net/ethernet/intel/igc/ |
| 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_acquire_nvm - Generic request for access to EEPROM 42 * Set the EEPROM access request bit and wait for EEPROM access grant bit. 44 * EEPROM access and return -IGC_ERR_NVM (-1). 74 * igc_release_nvm - Release exclusive access to EEPROM 77 * Stop any current commands to the EEPROM and clear the EEPROM request bit. 89 * igc_read_nvm_eerd - Reads EEPROM using EERD register 91 * @offset: offset of word in the EEPROM to read [all …]
|
| /kernel/linux/linux-5.10/drivers/net/ethernet/intel/igb/ |
| 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 …]
|
| /kernel/linux/linux-6.6/drivers/net/ethernet/intel/igb/ |
| 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 …]
|