regmap_noinc_read(9)
π regmap_noinc_read(9) β the "read but don't increment, bestie" situation
okay so real talk, this one lives in the Kernel API Manual and it is genuinely niche but SO useful, iykyk π¦
β¨ NAME β¨
regmap_noinc_read β read data from a register without incrementing the register number, no cap π
πΈ SYNOPSIS πΈ
int regmap_noinc_read (struct regmap *map , unsigned int reg , void *val
, size_t val_len );
like yes girl, that's the whole signature, copy it exactly please π
π ARGUMENTS π
mapβ the register map you're reading from. your little regmap boy πregβ the register to read from. the specific one. not the next one. we're not incrementing, remember πvalβ pointer to your data buffer. where the good stuff lands β¨val_lenβ length of that output buffer, in bytes. fr fr, in bytes π
π¦ DESCRIPTION π¦
okay so here's the lore. the regmap API usually assumes that bulk read operations read a range of registers β like, read one, next one, next one, weeeee. standard behaviour π«
but some devices have certain registers where a read operation will read from an internal FIFO instead. the way that changes everything π so this function is for those iconique weirdo registers.
the target register must be volatile β that's non-negotiable, bestie. but here's the slay part: registers after it can be completely unrelated cacheable registers. they don't have to match, they don't have to follow. no strings attached π«Ά
this will attempt multiple reads as required to read val_len bytes. so you ask for a length, it keeps going till it's done π
returns a value of zero on success, and a negative errno in error cases. periodt π
π SEE ALSO π
also the kernel file lives at ./drivers/base/regmap/regmap.c β go look if you're curious π§
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_noinc_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_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)
and that's the whole page, bestie π«Ά this one's from the kernel file <code>./drivers/base/regmap</code>, dated <strong>October 2026</strong> β go off, read your FIFO, don't increment anything πβ¨
π¦ 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