Lines Matching refs:cfg
775 static inline bool is_hamming_ecc(struct brcmnand_cfg *cfg) in is_hamming_ecc() argument
777 return cfg->sector_size_1k == 0 && cfg->spare_area_size == 16 && in is_hamming_ecc()
778 cfg->ecc_level == 15; in is_hamming_ecc()
788 struct brcmnand_cfg *cfg = &host->hwcfg; in brcmnand_create_layout() local
800 sectors = cfg->page_size / (512 << cfg->sector_size_1k); in brcmnand_create_layout()
801 sas = cfg->spare_area_size << cfg->sector_size_1k; in brcmnand_create_layout()
804 if (is_hamming_ecc(cfg)) { in brcmnand_create_layout()
810 if (cfg->page_size == 512) in brcmnand_create_layout()
854 if (cfg->page_size == 512 && (sas - req >= 6)) { in brcmnand_create_layout()
1711 struct brcmnand_cfg *cfg) in brcmnand_set_cfg() argument
1727 if (ctrl->block_sizes[i] * 1024 == cfg->block_size) { in brcmnand_set_cfg()
1733 cfg->block_size); in brcmnand_set_cfg()
1737 block_size = ffs(cfg->block_size) - ffs(BRCMNAND_MIN_BLOCKSIZE); in brcmnand_set_cfg()
1740 if (cfg->block_size < BRCMNAND_MIN_BLOCKSIZE || (ctrl->max_block_size && in brcmnand_set_cfg()
1741 cfg->block_size > ctrl->max_block_size)) { in brcmnand_set_cfg()
1743 cfg->block_size); in brcmnand_set_cfg()
1751 if (ctrl->page_sizes[i] == cfg->page_size) { in brcmnand_set_cfg()
1757 cfg->page_size); in brcmnand_set_cfg()
1761 page_size = ffs(cfg->page_size) - ffs(BRCMNAND_MIN_PAGESIZE); in brcmnand_set_cfg()
1764 if (cfg->page_size < BRCMNAND_MIN_PAGESIZE || (ctrl->max_page_size && in brcmnand_set_cfg()
1765 cfg->page_size > ctrl->max_page_size)) { in brcmnand_set_cfg()
1766 dev_warn(ctrl->dev, "invalid page size %u\n", cfg->page_size); in brcmnand_set_cfg()
1770 if (fls64(cfg->device_size) < fls64(BRCMNAND_MIN_DEVSIZE)) { in brcmnand_set_cfg()
1772 (unsigned long long)cfg->device_size); in brcmnand_set_cfg()
1775 device_size = fls64(cfg->device_size) - fls64(BRCMNAND_MIN_DEVSIZE); in brcmnand_set_cfg()
1777 tmp = (cfg->blk_adr_bytes << CFG_BLK_ADR_BYTES_SHIFT) | in brcmnand_set_cfg()
1778 (cfg->col_adr_bytes << CFG_COL_ADR_BYTES_SHIFT) | in brcmnand_set_cfg()
1779 (cfg->ful_adr_bytes << CFG_FUL_ADR_BYTES_SHIFT) | in brcmnand_set_cfg()
1780 (!!(cfg->device_width == 16) << CFG_BUS_WIDTH_SHIFT) | in brcmnand_set_cfg()
1795 tmp |= cfg->ecc_level << NAND_ACC_CONTROL_ECC_SHIFT; in brcmnand_set_cfg()
1797 tmp |= cfg->spare_area_size; in brcmnand_set_cfg()
1800 brcmnand_set_sector_size_1k(host, cfg->sector_size_1k); in brcmnand_set_cfg()
1808 static void brcmnand_print_cfg(char *buf, struct brcmnand_cfg *cfg) in brcmnand_print_cfg() argument
1812 (unsigned long long)cfg->device_size >> 20, in brcmnand_print_cfg()
1813 cfg->block_size >> 10, in brcmnand_print_cfg()
1814 cfg->page_size >= 1024 ? cfg->page_size >> 10 : cfg->page_size, in brcmnand_print_cfg()
1815 cfg->page_size >= 1024 ? "KiB" : "B", in brcmnand_print_cfg()
1816 cfg->spare_area_size, cfg->device_width); in brcmnand_print_cfg()
1819 if (is_hamming_ecc(cfg)) in brcmnand_print_cfg()
1821 else if (cfg->sector_size_1k) in brcmnand_print_cfg()
1822 sprintf(buf, ", BCH-%u (1KiB sector)", cfg->ecc_level << 1); in brcmnand_print_cfg()
1824 sprintf(buf, ", BCH-%u", cfg->ecc_level); in brcmnand_print_cfg()
1844 struct brcmnand_cfg *cfg = &host->hwcfg; in brcmnand_setup_dev() local
1849 memset(cfg, 0, sizeof(*cfg)); in brcmnand_setup_dev()
1856 cfg->spare_area_size = mtd->oobsize / in brcmnand_setup_dev()
1859 cfg->spare_area_size = oob_sector; in brcmnand_setup_dev()
1861 if (cfg->spare_area_size > ctrl->max_oob) in brcmnand_setup_dev()
1862 cfg->spare_area_size = ctrl->max_oob; in brcmnand_setup_dev()
1867 mtd->oobsize = cfg->spare_area_size * (mtd->writesize >> FC_SHIFT); in brcmnand_setup_dev()
1869 cfg->device_size = mtd->size; in brcmnand_setup_dev()
1870 cfg->block_size = mtd->erasesize; in brcmnand_setup_dev()
1871 cfg->page_size = mtd->writesize; in brcmnand_setup_dev()
1872 cfg->device_width = (chip->options & NAND_BUSWIDTH_16) ? 16 : 8; in brcmnand_setup_dev()
1873 cfg->col_adr_bytes = 2; in brcmnand_setup_dev()
1874 cfg->blk_adr_bytes = get_blk_adr_bytes(mtd->size, mtd->writesize); in brcmnand_setup_dev()
1879 cfg->ecc_level = 15; in brcmnand_setup_dev()
1881 cfg->ecc_level = chip->ecc.strength; in brcmnand_setup_dev()
1882 cfg->sector_size_1k = 0; in brcmnand_setup_dev()
1895 cfg->ecc_level = chip->ecc.strength >> 1; in brcmnand_setup_dev()
1896 cfg->sector_size_1k = 1; in brcmnand_setup_dev()
1904 cfg->ful_adr_bytes = cfg->blk_adr_bytes; in brcmnand_setup_dev()
1906 cfg->ful_adr_bytes += cfg->col_adr_bytes; in brcmnand_setup_dev()
1908 cfg->ful_adr_bytes += 1; in brcmnand_setup_dev()
1910 ret = brcmnand_set_cfg(host, cfg); in brcmnand_setup_dev()
1916 brcmnand_print_cfg(msg, cfg); in brcmnand_setup_dev()