regmap_noinc_write(9)
π regmap_noinc_write π
okay so bestie, welcome to the regmap_noinc_write(9) page β straight out of the Kernel API Manual, and it's honestly kinda iconic. let's get into it π«Ά
β¨ NAME β¨
regmap_noinc_write β write data to a register without incrementing the register number. yes, the register stays put. it's giving "I live here now" energy π π
πΈ SYNOPSIS πΈ
int regmap_noinc_write (struct regmap *map , unsigned int reg , const
void *val , size_t val_len );
that's the whole signature, copy it exactly, don't @ me π
π ARGUMENTS π
mapβ the register map you're writing to. the main character of the operation ngl πregβ the register you're writing to. this one does NOT move, that's the whole point β¨valβ pointer to your data buffer. your payload, your vibe π¦val_lenβ length of the output buffer, in bytes. count 'em π
π§ DESCRIPTION π§
okay so context, because it matters: the regmap API usually assumes that bulk bus write operations are gonna write across a range of registers. like, one after another, incrementing as they go. that's the default assumption, periodt.
but some devices β and this is the fun part β have certain registers where a write operation just dumps data into an internal FIFO. so the register number doesn't tick up. it's the same address, over and over, and that's correct behavior. slay π
the target register must be volatile. but lowkey the registers after it can be completely unrelated cacheable registers β they don't have to match, no cap. π
this function will attempt multiple writes as required to write val_len bytes. so if your buffer is big, it's gonna do the thing more than once. it's thorough like that π₯
return values, super important:
- a value of zero gets returned on success β¨
- a negative errno gets returned in error cases π
π SEE ALSO π
so many siblings, this function has a whole friend group fr fr. also bestie, check the kernel file ./drivers/base/regmap/regmap.c:
devm_regmap_field_alloc(9)regmap_field_bulk_alloc(9)devm_regmap_field_bulk_alloc(9)regmap_field_bulk_free(9)devm_regmap_field_bulk_free(9)devm_regmap_field_free(9)regmap_field_alloc(9)regmap_field_free(9)regmap_reinit_cache(9)regmap_exit(9)dev_get_regmap(9)regmap_get_device(9)regmap_can_raw_write(9)regmap_get_raw_read_max(9)regmap_get_raw_write_max(9)regmap_write(9)regmap_write_async(9)regmap_raw_write(9)regmap_field_update_bits_base(9)regmap_field_test_bits(9)regmap_fields_update_bits_base(9)regmap_bulk_write(9)regmap_multi_reg_write(9)regmap_multi_reg_write_bypassed(9)regmap_raw_write_async(9)regmap_read(9)regmap_read_bypassed(9)regmap_raw_read(9)regmap_noinc_read(9)regmap_field_read(9)regmap_fields_read(9)regmap_bulk_read(9)regmap_multi_reg_read(9)regmap_update_bits_base(9)regmap_test_bits(9)regmap_async_complete(9)regmap_register_patch(9)regmap_get_val_bytes(9)regmap_get_max_register(9)regmap_get_reg_stride(9)regmap_might_sleep(9)
π quick vibe check before you go:regmust be volatile, and this thing can do multiple writes to push out allval_lenbytes. don't forget that part or the FIFO will simply not eat. π
kay that's the page!! this one's sourced from ./drivers/base/regmap and slaps a date of October 2026 on it β future girlie behavior honestly π¦β¨ hope the FIFO treats you well, ily, bye ππ
π¦ 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