eeprom_write(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’Ύ eeprom_write(9) β€” like, the EEPROM writer era πŸ’Ύ

okay so bestie, welcome to section 9 of the Kernel API Manual ✨ this one is eeprom_write and it's honestly short and sweet β€” a little one-job icon. Let's get into it 🫢


🌸 NAME 🌸

eeprom_write β€” write to AT93C46 EEPROM πŸ’–

Like, that's the whole personality. She writes to the AT93C46 EEPROM. Slay.


✨ SYNOPSIS ✨

void eeprom_write (struct ksz_hw *hw , u8 reg , u16 data );

no cap, that's the exact signature β€” spaces and all, I'm not touching it πŸ™ˆ


πŸŽ€ ARGUMENTS πŸŽ€

  • hw β€” the hardware instance πŸ’… like, which hardware we're talking to.
  • reg β€” the register offset. where in the register map we're aiming, bestie.
  • data β€” the data value. the actual payload going in. the main character of this whole operation πŸ‘‘

πŸ¦‹ DESCRIPTION πŸ¦‹

so this procedure writes a word to the AT93C46 EEPROM ✨ that's it, that's the vibe. one word, one EEPROM, iconic behaviour.

ngl it's giving "small function, big responsibility" β€” because like, it's literally writing a word into the AT93C46 EEPROM. periodt. πŸ’œ


πŸ”₯ SEE ALSO πŸ”₯

okay this is the part where the friend group shows up 😭 literally everyone is here. the kernel file lives at ./drivers/net/ethernet/micrel/ksz884x.c and then there's the whole extended squad of structs and functions, all in section 9:

struct ksz_hw_desc(9), struct ksz_sw_desc(9), struct ksz_dma_buf(9), struct ksz_desc(9), struct ksz_desc_info(9), struct ksz_mac_table(9), struct ksz_vlan_table(9), struct ksz_port_mib(9), struct ksz_port_cfg(9), struct ksz_switch(9), struct ksz_port_info(9), struct ksz_hw(9), struct ksz_port(9), struct ksz_timer_info(9), struct ksz_shared_mem(9), struct ksz_counter_info(9), struct dev_info(9), struct dev_priv(9) ✨

then the hw/sw/port crew: hw_turn_on_intr(9), hw_block_intr(9), sw_r_table(9), sw_w_table_64(9), sw_w_sta_mac_table(9), sw_r_vlan_table(9), port_r_mib_cnt(9), port_r_mib_pkt(9), port_r_cnt(9), port_init_cnt(9), port_cfg(9), port_r8(9), port_r16(9), port_w16(9), sw_chk(9), sw_cfg(9), sw_cfg_broad_storm(9), sw_get_broad_storm(9), sw_dis_broad_storm(9), sw_ena_broad_storm(9), sw_init_broad_storm(9), hw_cfg_broad_storm(9), sw_dis_prio_rate(9), sw_init_prio_rate(9), sw_dis_diffserv(9), sw_dis_802_1p(9), sw_cfg_replace_null_vid(9), sw_cfg_replace_vid(9), sw_cfg_port_based(9), sw_dis_multi_queue(9), sw_init_prio(9), port_get_def_vid(9), sw_init_vlan(9), sw_cfg_port_base_vlan(9), sw_set_addr(9), sw_set_global_ctrl(9), port_set_stp_state(9), sw_clr_sta_mac_table(9), sw_init_stp(9), sw_block_addr(9), hw_r_phy(9), hw_w_phy(9), eeprom_read(9) (her sibling!! πŸ’– the read counterpart, we stan a duo), port_get_link_speed(9), port_set_link_speed(9), port_force_link_speed(9) 🌈

the wol and hw set: hw_chk_wol_pme_status(9), hw_clr_wol_pme_status(9), hw_cfg_wol_pme(9), hw_cfg_wol(9), hw_set_wol_frame(9), hw_add_wol_arp(9), hw_add_wol_bcast(9), hw_add_wol_mcast(9), hw_add_wol_ucast(9), hw_enable_wol(9), hw_init(9), hw_reset(9), hw_setup(9), hw_setup_intr(9), hw_set_desc_base(9), hw_start_rx(9), hw_stop_rx(9), hw_start_tx(9), hw_stop_tx(9), hw_disable(9), hw_enable(9), hw_alloc_pkt(9), hw_send_pkt(9), hw_set_addr(9), hw_read_addr(9), hw_clr_multicast(9), hw_set_grp_addr(9), hw_set_multicast(9), hw_set_promiscuous(9), sw_enable(9), sw_setup(9) ⭐

timer + descriptor + memory besties: ksz_start_timer(9), ksz_stop_timer(9), ksz_alloc_soft_desc(9), ksz_alloc_desc(9), free_dma_buf(9), ksz_init_rx_buffers(9), ksz_alloc_mem(9), ksz_free_desc(9), ksz_free_buffers(9), ksz_free_mem(9), send_packet(9), transmit_cleanup(9), tx_done(9) πŸŽ€

the netdev era πŸ’€ and it is LONG: netdev_tx(9), netdev_tx_timeout(9), netdev_intr(9), netdev_close(9), netdev_open(9), netdev_query_statistics(9), netdev_set_mac_address(9), netdev_set_rx_mode(9), netdev_ioctl(9), mdio_read(9), mdio_write(9), netdev_get_link_ksettings(9), netdev_set_link_ksettings(9), netdev_nway_reset(9), netdev_get_link(9), netdev_get_drvinfo(9), netdev_get_regs_len(9), netdev_get_regs(9), netdev_get_wol(9), netdev_set_wol(9), netdev_get_msglevel(9), netdev_set_msglevel(9), netdev_get_eeprom_len(9), netdev_get_eeprom(9), netdev_set_eeprom(9), netdev_get_pauseparam(9), netdev_set_pauseparam(9), netdev_get_ringparam(9), netdev_get_strings(9), netdev_get_sset_count(9), netdev_get_ethtool_stats(9), netdev_set_features(9), dev_monitor(9), netdev_init(9) πŸ‘‘

iykyk β€” that's a whole group chat worth of (9) references, and every single one of them made it in 🧚


fr fr bestie: the whole page is that one void eeprom_write (struct ksz_hw *hw , u8 reg , u16 data ); prototype plus "writes a word to the AT93C46 EEPROM". no hidden drama, no surprise return value, no exit statuses β€” it returns void, so there's literally nothing to check. πŸ’…

and that's the page!! πŸ“ brought to you by the fine people over in ./drivers/net/ethernet/micrel, dated October 2026 β€” go drink some water and read eeprom_read(9) next, mwah πŸ’œπŸŒΈβœ¨

πŸ“¦ where this page comes from