STRUCT IMG_IR_PRIV_HW(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 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