e1000_acquire_eeprom(9)
π e1000_acquire_eeprom β bestie's guide to waking up the EEPROM π
okay so real talk, this is a page out of the Kernel API Manual (section 9, kernel functions, iykyk) and it's about the single most "hold my hand before we do anything" function in the whole e1000 driver. it's not glamorous, it's not main character energy on its own β but without it nothing else works, so. here we are. π
β¨ NAME β¨
e1000_acquire_eeprom β lowkey prepares EEPROM for access, that's the whole vibe
πΈ SYNOPSIS πΈ
s32 e1000_acquire_eeprom (struct e1000_hw *hw );
that's it. one argument. returns an s32. slay.
π¦ ARGUMENTS π¦
hwβ a struct containing variables that are accessed by shared code. yes bestie, "shared code" β multiple parts of the driver poke at the same struct, so this is the communal locker, andhwis the key. π
π DESCRIPTION π
okay so here's the routine. this function does exactly three things and then dips:
- Lowers the EEPROM clock. β¬οΈ clock goes down.
- Clears the input pin. π§Ή input pin goes bye.
- Sets the chip select pin. π chip select gets asserted.
and that's the whole function. three little steps. no cap.
the important part: this function should be called before issuing a command to the EEPROM. like, literally, don't even think about talking to that EEPROM until e1000_acquire_eeprom has done its thing. it's giving "you gotta knock before you enter" energy, except the knock is lowering a clock line. periodt. π₯
β οΈ lowkey critical: skip this and your EEPROM command is just shouting into the void, bestie. prep first, command second. always. π«Ά
π SEE ALSO π
here's the whole extended friend group π§ β go say hi to all of them:
- Kernel file β
./drivers/net/ethernet/intel/e1000/e1000_hw.c
and then the cast, in exactly the order the page gave them:
e1000_set_phy_type(9), e1000_phy_init_script(9), e1000_set_mac_type(9), e1000_set_media_type(9), e1000_reset_hw(9), e1000_init_hw(9), e1000_adjust_serdes_amplitude(9), e1000_setup_link(9), e1000_setup_fiber_serdes_link(9), e1000_copper_link_rtl_setup(9), e1000_copper_link_preconfig(9), e1000_copper_link_igp_setup(9), e1000_copper_link_mgp_setup(9), e1000_copper_link_autoneg(9), e1000_copper_link_postconfig(9), e1000_setup_copper_link(9), e1000_phy_setup_autoneg(9), e1000_phy_force_speed_duplex(9), e1000_config_collision_dist(9), e1000_config_mac_to_phy(9), e1000_force_mac_fc(9), e1000_config_fc_after_link_up(9), e1000_check_for_serdes_link_generic(9), e1000_check_for_link(9), e1000_get_speed_and_duplex(9), e1000_wait_autoneg(9), e1000_raise_mdi_clk(9), e1000_lower_mdi_clk(9), e1000_shift_out_mdi_bits(9), e1000_shift_in_mdi_bits(9), e1000_read_phy_reg(9), e1000_write_phy_reg(9), e1000_phy_hw_reset(9), e1000_phy_reset(9), e1000_detect_gig_phy(9), e1000_phy_reset_dsp(9), e1000_phy_igp_get_info(9), e1000_phy_m88_get_info(9), e1000_phy_get_info(9), e1000_init_eeprom_params(9), e1000_raise_ee_clk(9), e1000_lower_ee_clk(9), e1000_shift_out_ee_bits(9), e1000_shift_in_ee_bits(9), e1000_standby_eeprom(9), e1000_release_eeprom(9), e1000_spi_eeprom_ready(9), e1000_read_eeprom(9), e1000_validate_eeprom_checksum(9), e1000_update_eeprom_checksum(9), e1000_write_eeprom(9), e1000_write_eeprom_spi(9), e1000_write_eeprom_microwire(9), e1000_read_mac_addr(9), e1000_init_rx_addrs(9), e1000_hash_mc_addr(9), e1000_rar_set(9), e1000_write_vfta(9), e1000_clear_vfta(9), e1000_setup_led(9), e1000_cleanup_led(9), e1000_led_on(9), e1000_led_off(9), e1000_clear_hw_cntrs(9), e1000_reset_adaptive(9), e1000_update_adaptive(9), e1000_get_bus_info(9), e1000_write_reg_io(9), e1000_get_cable_length(9), e1000_check_polarity(9), e1000_check_downshift(9), e1000_config_dsp_after_link_change(9), e1000_set_phy_mode(9), e1000_set_d3_lplu_state(9), e1000_set_vco_speed(9), e1000_enable_mng_pass_thru(9), e1000_get_auto_rd_done(9), e1000_get_phy_cfg_done(9)
π obligatory reminder that e1000_release_eeprom(9) exists for a reason β you acquire, you do your little command, you release. don't be the person who holds the EEPROM forever. π
π sign-off π
source/version situation: ./drivers/net/ethernet/intel/e... (yeah it gets cut off on the page, that's how it shipped, i don't make the rules π) β dated October 2026. mwah, go prep that EEPROM bestie, you're gonna slay β¨ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms