nand_scan_ident(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ NAME πŸŽ€

nand_scan_ident β€” scan for the NAND device πŸ’–

Ok so this page is nand_scan_ident(9) from the Kernel API Manual, and yeah the title up top is literally the function name twice, that's just how these pages roll, iykyk 🫢


✨ SYNOPSIS ✨

int nand_scan_ident (struct nand_chip *chip , unsigned int maxchips ,
       struct nand_flash_dev *table );

πŸ’– ARGUMENTS πŸ’–

  • chip β€” the NAND chip object itself. your main character struct πŸ’…
  • maxchips β€” how many chips we're scanning for. like, the headcount.
  • table β€” an alternative NAND ID table, for when you wanna look things up somewhere else 🌸

πŸ¦‹ DESCRIPTION πŸ¦‹

So here's the tea β˜•: this is the first phase of the normal nand_scan function. It reads the flash ID and sets up the MTD fields accordingly. That's the whole job. No cap. πŸ”₯

Now the lore 🧚 β€” this helper used to be called directly from controller drivers that needed to tweak some ECC-related parameters before nand_scan_tail. This separation prevented dynamic allocations during this phase, which was, and I quote, unconvenient 😭 and has been banned for the benefit of the ->init_ecc/cleanup_ecc hooks. So like... don't do that anymore bestie, the hooks ate and left no crumbs πŸ‘‘

fr fr: no dynamic allocation during this phase. it's not a suggestion, it's banned. periodt. πŸ’€

πŸ‘‘ SEE ALSO πŸ‘‘

The kernel file is ./drivers/mtd/nand/raw/nand_base.c β€” and now the friend-group roll call, in order, bestie, all of them, don't skip 🫢

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_check_ecc_caps(9), nand_match_ecc_req(9), nand_maximize_ecc(9), nand_ecc_choose_conf(9), nand_scan_tail(9), nand_scan_with_ids(9), nand_cleanup(9)


That's the whole page, bestie, you ate that πŸ’… This cutie came out of ./drivers/mtd/nand/raw in October 2026, and it's filed under nand_scan_ident(9) β€” go read it again if you forgot something, no shame 🌈✨

πŸ“¦ where this page comes from