STRUCT IMG_IR_PRIV_HW(9)
πΈ NAME πΈ
hey bestie, welcome to the struct img_ir_priv_hw(9) page from the Kernel API Manual β this is literally the private driver data for the hardware decoder, and we're gonna make it make sense. π
β¨
struct img_ir_priv_hw β private driver data for hardware decoder. No cap, that's the whole assignment. π«Ά
β¨ SYNOPSIS β¨
okay so here's the struct in all its glory, copied exactly because we do not mess with code, periodt:
struct img_ir_priv_hw {
unsigned int ct_quirks[4];
struct rc_dev *rdev;
struct notifier_block clk_nb;
struct timer_list end_timer;
struct timer_list suspend_timer;
const struct img_ir_decoder *decoder;
u64 enabled_protocols;
unsigned long clk_hz;
struct img_ir_reg_timings reg_timings;
unsigned int flags;
struct img_ir_filter filters[RC_FILTER_MAX];
enum img_ir_mode mode;
bool stopping;
u32 suspend_irqen;
u32 quirk_suspend_irq;
};
π Members π
these are the little fields that make the whole struct iconic β every single one matters, fr fr:
ct_quirksβ quirk bits for each code type. lowkey the chaos gremlins of the code-type world. πrdevβ the remote control device. the main character device, honestly. πclk_nbβ notifier block for clock notify events. it's giving "clock gossip" energy. β°end_timerβ timer until repeat timeout. the countdown queen. β³suspend_timerβ timer to re-enable protocol. she wakes the protocol back up after suspend. π΄β‘οΈπdecoderβ current decoder settings. the decoder's current fit. πenabled_protocolsβ currently enabled protocols. these are the protocols that are switched on rn. βclk_hzβ current core clock rate in Hz. numbers bestie, numbers. π’reg_timingsβ timing reg values for decoder at clock rate. all the timing-register tea at this clock rate. βοΈflagsβIMG_IR_F_*. literally those flag bits, exactly like that. π©filtersβ HW filters (derived from scancode filters). hardware filters that come from scancode filters. πmodeβ current decode mode. what mode are we in? this one. π¦stoppingβ indicates that decoder is being taken down and timers should not be restarted. bestie, this is important: timers must not restart here. πsuspend_irqenβ saved IRQ enable mask over suspend. the IRQ enable mask that got saved across suspend. πΎquirk_suspend_irqβ saved IRQ enable mask over quirk suspend timer. same saved-mask vibe, but for the quirk suspend timer. π«Ά
π¦ SEE ALSO π¦
go peek at the kernel file ./drivers/media/rc/img-ir/img-ir-hw.h and the whole struct squad: struct img_ir_control(9), struct img_ir_timing_range(9), struct img_ir_symbol_timing(9), struct img_ir_free_timing(9), struct img_ir_timings(9), struct img_ir_filter(9), struct img_ir_timing_regvals(9), struct img_ir_scancode_req(9), struct img_ir_decoder(9), struct img_ir_reg_timings(9). iykyk. π
That's the tea, bestie! π source/version: ./drivers/media/rc/img-ir, date: October 2026, page: struct img_ir_priv_hw(9). go slay those IRQs. ππ₯
π¦ 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