nand_ecc_choose_conf(9)
π nand_ecc_choose_conf β the Kernel API Manual tea β
okay so bestie, we're in the Kernel API Manual today and this one is genuinely a little baddie: nand_ecc_choose_conf π
β¨ NAME β¨
nand_ecc_choose_conf β it literally sets the ECC strength and the ECC step size π (yes, both, she does both)
π¦ SYNOPSIS π¦
int nand_ecc_choose_conf (struct nand_chip *chip , const struct
nand_ecc_caps *caps , int oobavail );
πΈ ARGUMENTS πΈ
chipβ the nand chip info structure, aka the whole personality of the chip we're configuring π«Άcapsβ the ECC engine caps info structure, i.e. what this controller can actually do (her limits, respectfully)oobavailβ the OOB size that the ECC engine can use, your budget basically πΈ
π DESCRIPTION π
So the whole vibe of this function is: choose the ECC configuration according to the following logic, and the logic is giving very much decision-tree main character energy π
- If both ECC step size and ECC strength are already set (usually by DT, iykyk) then check if it is supported by this controller. Like, respect the choice but also do a vibe check on it π₯
- If the user provided the
nand-ecc-maximizeproperty, then select maximum ECC strength. Go big, no cap π - Otherwise, try to match the ECC step size and ECC strength closest to the chip's requirement. And if the available OOB size can't fit the chip requirement then fallback to the maximum ECC step size and ECC strength. Plan B slays π¦
On success, the chosen ECC settings are set. Periodt β¨
β SEE ALSO β
Kernel file ./drivers/mtd/nand/raw/nand_base.c β and bestie, here's the whole friend group, everybody say hi π
nand_extract_bits(9)nand_select_target(9)nand_deselect_target(9)nand_release_device(9)nand_bbm_get_next_page(9)nand_block_bad(9)nand_region_is_secured(9)nand_get_device(9)nand_check_wp(9)nand_fill_oob(9)nand_do_write_oob(9)nand_default_block_markbad(9)nand_markbad_bbm(9)nand_block_markbad_lowlevel(9)nand_block_isreserved(9)nand_block_checkbad(9)nand_soft_waitrdy(9)nand_gpio_waitrdy(9)panic_nand_wait(9)nand_reset_interface(9)nand_setup_interface(9)nand_choose_best_sdr_timings(9)nand_choose_best_nvddr_timings(9)nand_choose_best_timings(9)nand_choose_interface_config(9)nand_fill_column_cycles(9)nand_read_page_op(9)nand_read_param_page_op(9)nand_change_read_column_op(9)nand_read_oob_op(9)nand_prog_page_begin_op(9)nand_prog_page_end_op(9)nand_prog_page_op(9)nand_change_write_column_op(9)nand_readid_op(9)nand_status_op(9)nand_exit_status_op(9)nand_erase_op(9)nand_set_features_op(9)nand_get_features_op(9)nand_reset_op(9)nand_read_data_op(9)nand_write_data_op(9)struct nand_op_parser_ctx(9)nand_op_parser_must_split_instr(9)nand_op_parser_match_pat(9)nand_op_parser_exec_op(9)nand_subop_get_addr_start_off(9)nand_subop_get_num_addr_cyc(9)nand_subop_get_data_start_off(9)nand_subop_get_data_len(9)nand_reset(9)nand_get_features(9)nand_set_features(9)nand_read_page_raw_notsupp(9)nand_read_page_raw(9)nand_monolithic_read_page_raw(9)nand_read_page_raw_syndrome(9)nand_read_page_swecc(9)nand_read_subpage(9)nand_read_page_hwecc(9)nand_read_page_hwecc_oob_first(9)nand_read_page_syndrome(9)nand_transfer_oob(9)nand_setup_read_retry(9)nand_do_read_ops(9)nand_read_oob_std(9)nand_read_oob_syndrome(9)nand_write_oob_std(9)nand_write_oob_syndrome(9)nand_do_read_oob(9)nand_read_oob(9)nand_write_page_raw_notsupp(9)nand_write_page_raw(9)nand_monolithic_write_page_raw(9)nand_write_page_raw_syndrome(9)nand_write_page_swecc(9)nand_write_page_hwecc(9)nand_write_subpage_hwecc(9)nand_write_page_syndrome(9)nand_write_page(9)nand_do_write_ops(9)panic_nand_write(9)nand_write_oob(9)nand_erase(9)nand_erase_nand(9)nand_sync(9)nand_block_isbad(9)nand_block_markbad(9)nand_suspend(9)nand_resume(9)nand_shutdown(9)nand_lock(9)nand_unlock(9)rawnand_dt_parse_gpio_cs(9)nand_scan_ident(9)nand_check_ecc_caps(9)nand_match_ecc_req(9)nand_maximize_ecc(9)nand_scan_tail(9)nand_scan_with_ids(9)nand_cleanup(9)
π«Ά mwah, that's the whole page. catch u later β this one lives in ./drivers/mtd/nand/raw and it's dated October 2026 β so like, future icon behavior honestly ππ«
π¦ 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