STRUCT ST_LSM6DSX_SHUB_SETTINGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct st_lsm6dsx_shub_settings β€” ST IMU hw i2c controller settings ✨

Okay bestie, so this is a page straight out of the Kernel API Manual, and it's literally all about struct st_lsm6dsx_shub_settings β€” the ST IMU hardware i2c controller settings πŸ’…. It's giving "one struct to rule the sensor hub" energy, and we're gonna go through every single field together, no cap. 🫢


🌸 SYNOPSIS 🌸

struct st_lsm6dsx_shub_settings {
    struct st_lsm6dsx_reg page_mux;
    struct {
      bool sec_page;
      u8 addr;
      u8 mask;
    } master_en;
    struct {
      bool sec_page;
      u8 addr;
      u8 mask;
    } pullup_en;
    struct st_lsm6dsx_reg aux_sens;
    struct st_lsm6dsx_reg wr_once;
    struct st_lsm6dsx_reg emb_func;
    u8 num_ext_dev;
    struct {
      bool sec_page;
      u8 addr;
    } shub_out;
    u8 slv0_addr;
    u8 dw_slv0_addr;
    u8 batch_en;
    u8 pause;
 };

Look at her. Iconic. Not a single field out of place. πŸŽ€


πŸ’– Members πŸ’–

  • page_mux β€” the register page mux info, and yes she comes with her addr + mask besties along for the ride.
  • master_en β€” master config register info (addr + mask). Very main character energy for the master config.
  • pullup_en β€” the i2c controller pull-up register info (addr + mask). Pull-ups are literally the support system of i2c, we stan. ⭐
  • aux_sens β€” aux sensor register info (addr + mask). The aux sensor said "I'm here too!" and honestly? Valid.
  • wr_once β€” write_once register info (addr + mask). One write, one time, no repeating yourself. 😭
  • emb_func β€” embedded function register info (addr + mask). The embedded functions are doing the most and we love that for them. πŸ”₯
  • num_ext_dev β€” max number of slave devices. It's the u8 that keeps the whole friend group from getting too big. πŸ’€
  • shub_out β€” sensor hub first output register info. Note the vibe: this one's a bool sec_page + u8 addr situation β€” no mask invited to this party, iykyk. πŸ™ˆ
  • slv0_addr β€” slave0 address, but make it the secondary page. Very "you'll find me in the second location" of her. πŸ’…
  • dw_slv0_addr β€” slave0 write register address, also in the secondary page. So yes, slv0_addr and dw_slv0_addr are lowkey siblings and they both live in the secondary page. πŸ¦‹
  • batch_en β€” Enable/disable FIFO batching. Flip her on, flip her off, she contains multitudes. πŸ”₯
  • pause β€” controller pause value. Sometimes the controller just needs a little break, and honestly same. 🌸

🌈 SEE ALSO 🌈

Kernel file ./drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h, plus the whole squad:

  • struct st_lsm6dsx_fifo_ops(9)
  • struct st_lsm6dsx_hw_ts_settings(9)
  • struct st_lsm6dsx_ext_dev_settings(9)
  • struct st_lsm6dsx_settings(9)
  • struct st_lsm6dsx_sensor(9)
  • struct st_lsm6dsx_hw(9)

Go read them fr fr, they're all in the same friend group. 🫢


Bestie note: this page lives at ./drivers/iio/imu/st_lsm6dsx, dated October 2026, and it's part of the Kernel API Manual. That's the whole footer, but cuter. πŸ’œβœ¨

Ok that's the whole page, you ate that, periodt. πŸŽ€πŸ‘‘

πŸ“¦ where this page comes from