《Linux内核设计与实现》读书笔记 - embedclub/Lavender GitHub Wiki

好读书不求甚解

mm/backing-dev.c:int bdi_init(struct backing_dev_info *bdi)

fs/ramfs/inode.c:int __init init_rootfs(void)

init/initramfs.c:static char * __init unpack_to_rootfs(char *buf, unsigned len)

 if (column != -1 || page_addr != -1) {
     int ctrl = NAND_CTRL_CHANGE | NAND_NCE | NAND_ALE;

     /* Serially input address */
     if (column != -1) {
         /* Adjust columns for 16 bit buswidth */
         if (chip->options & NAND_BUSWIDTH_16)
             column >>= 1;
         chip->cmd_ctrl(mtd, column, ctrl);
         ctrl &= ~NAND_CTRL_CHANGE;
         chip->cmd_ctrl(mtd, column >> 8, ctrl);
     }    
     if (page_addr != -1) {
         chip->cmd_ctrl(mtd, page_addr, ctrl);
         chip->cmd_ctrl(mtd, page_addr >> 8,
                    NAND_NCE | NAND_ALE);
         /* One more address cycle for devices > 128MiB */
         if (chip->chipsize > (128 << 20)) 
             chip->cmd_ctrl(mtd, page_addr >> 16,
                        NAND_NCE | NAND_ALE);
     }    
 }    

nand_read nand_do_read_ops nand_command_lp nand_read_page_hwecc