STRUCT SI476X_CORE(9)
π NAME π
Hii bestie π«Ά this is struct si476x_core(9) from the Kernel API Manual, and itβs literally the internal data structure representing the underlying βcoreβ device that all the MFD cell-devices use. Main-character energy, no cap π
.
β¨ SYNOPSIS β¨
Okay so hereβs the whole struct, every field exactly where it lives π:
struct si476x_core {
struct i2c_client *client;
struct regmap *regmap;
int chip_id;
struct mfd_cell cells[SI476X_MFD_CELLS];
struct mutex cmd_lock;
atomic_t users;
wait_queue_head_t rds_read_queue;
struct kfifo rds_fifo;
struct work_struct rds_fifo_drainer;
bool rds_drainer_is_working;
struct mutex rds_drainer_status_lock;
wait_queue_head_t command;
atomic_t cts;
wait_queue_head_t tuning;
atomic_t stc;
struct si476x_power_up_args power_up_parameters;
enum si476x_power_state power_state;
struct regulator_bulk_data supplies[4];
struct gpio_desc *reset;
struct si476x_pinmux pinmux;
enum si476x_phase_diversity_mode diversity_mode;
atomic_t is_alive;
struct delayed_work status_monitor;
#define SI476X_WORK_TO_CORE(w) container_of(to_delayed_work(w),
struct si476x_core,
status_monitor);
int revision;
int rds_fifo_depth;
};
π«Ά Members π«Ά
clientβ the actual I2C client used to transfer commands to the chip. πregmapβ the regmap for accessing the device registers. β¨chip_idβ last digit of the chip model (E.g. "1"forSI4761). πcellsβ MFD cell devices created by this driver. πcmd_lockβ mutex used to serialize all the requests to the core device. β οΈ This field should not be used directly! Instead,si476x_core_lock/si476x_core_unlockshould be used to get exclusive access to the"core"device. Like, respect the lock etiquette, bestie π.usersβ active users counter (used by the radio cell). πrds_read_queueβ wait queue used to wait for RDS data. π¦rds_fifoβ FIFO in which all the RDS data received from the chip is placed. πrds_fifo_drainerβ worker that drains the on-chip RDS FIFO. π§rds_drainer_is_workingβ flag used for launching only one instance of therds_fifo_drainer. πrds_drainer_status_lockβ lock used to guard access to therds_drainer_is_workingvariable. πcommandβ wait queue for waiting on the command completion. πctsβ Clear To Send flag set upon receiving first status with CTS set. π¦tuningβ wait queue used for waiting for tune/seek command completion. π»stcβ similar tocts, but for the STC bit of the status value. βpower_up_parametersβ parameters used as argument forPOWER_UPcommand when the device is started. πpower_stateβ current power state of the device. β‘suppliesβ structure containing handles to all power supplies used by the device (NULLones are ignored). πΈresetβ GPIO connected to theRSTBpin of the chip. πpinmuxβ chipβs configurable pins configuration. ποΈdiversity_modeβ chipβs role when functioning in diversity mode. πis_aliveβ chip is initialized and active. πstatus_monitorβ polling worker used in polling use case scenario (when IRQ is not available). πrevisionβ chipβs running firmware revision number (used for correct command set support). π§rds_fifo_depthβ RDS FIFO size:20for IRQ mode or5for polling mode. π₯
π SEE ALSO π
- Kernel file
./include/linux/mfd/si476x-core.h enum si476x_power_state(9)si476x_core_lock(9)si476x_core_unlock(9)struct si476x_func_info(9)struct si476x_power_down_args(9)enum si476x_tunemode(9)enum si476x_smoothmetrics(9)struct si476x_rds_status_report(9)
Catch you later, bestie π β this lil page comes from ./include/linux/mfd, dated October 2026, and itβs all about struct si476x_core(9). Periodt πβ¨
π¦ 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