static void detect_partition_feature(struct denali_nand_info *denali) { /* * For MRST platform, denali->fwblks represent the * number of blocks firmware is taken, * FW is in protect partition and MTD driver has no * permission to access it. So let driver know how many * blocks it can't touch. */ if (ioread32(denali->flash_reg + FEATURES) & FEATURES__PARTITION) { if ((ioread32(denali->flash_reg + PERM_SRC_ID(1)) & PERM_SRC_ID__SRCID) == SPECTRA_PARTITION_ID) { denali->fwblks = ((ioread32(denali->flash_reg + MIN_MAX_BANK(1)) & MIN_MAX_BANK__MIN_VALUE) * denali->blksperchip) + (ioread32(denali->flash_reg + MIN_BLK_ADDR(1)) & MIN_BLK_ADDR__VALUE); } else { denali->fwblks = SPECTRA_START_BLOCK; } } else { denali->fwblks = SPECTRA_START_BLOCK; } }
static void detect_partition_feature(struct denali_nand_info *denali) { if (ioread32(denali->flash_reg + FEATURES) & FEATURES__PARTITION) { if ((ioread32(denali->flash_reg + PERM_SRC_ID(1)) & PERM_SRC_ID__SRCID) == SPECTRA_PARTITION_ID) { denali->fwblks = ((ioread32(denali->flash_reg + MIN_MAX_BANK(1)) & MIN_MAX_BANK__MIN_VALUE) * denali->blksperchip) + (ioread32(denali->flash_reg + MIN_BLK_ADDR(1)) & MIN_BLK_ADDR__VALUE); } else denali->fwblks = SPECTRA_START_BLOCK; } else denali->fwblks = SPECTRA_START_BLOCK; }