Merge "platform: msm_shared: add cache support to nand"
diff --git a/platform/msm_shared/bam.c b/platform/msm_shared/bam.c
index 6a2205e..a8fb4a7 100644
--- a/platform/msm_shared/bam.c
+++ b/platform/msm_shared/bam.c
@@ -415,6 +415,7 @@
desc->size = (uint16_t)len;
desc->reserved = 0;
+ arch_clean_invalidate_cache_range((addr_t) data_ptr, len);
arch_clean_invalidate_cache_range((addr_t) desc, BAM_DESC_SIZE);
/* Update the FIFO to point to the head */
diff --git a/platform/msm_shared/qpic_nand.c b/platform/msm_shared/qpic_nand.c
index 47d6d3a..684d2f5 100644
--- a/platform/msm_shared/qpic_nand.c
+++ b/platform/msm_shared/qpic_nand.c
@@ -66,6 +66,7 @@
static uint8_t *bbtbl;
static uint8_t* rdwr_buf;
+static uint32_t val;
static struct flash_id supported_flash[] = {
/* Flash ID Flash ID2 ID Mask ID Mask2 Density(MB) Wid Pgsz Blksz oobsz 8-bit ECCf */
@@ -111,7 +112,7 @@
qpic_nand_read_reg(uint32_t reg_addr,
uint8_t flags)
{
- uint32_t val;
+ val = 0;
struct cmd_element *cmd_list_read_ptr = ce_read_array;
bam_add_cmd_element(cmd_list_read_ptr, reg_addr, (uint32_t)PA((addr_t)&val), CE_READ_TYPE);
@@ -123,7 +124,9 @@
BAM_CE_SIZE,
BAM_DESC_CMD_FLAG| BAM_DESC_INT_FLAG | flags);
+ arch_clean_invalidate_cache_range((addr_t)&val, sizeof(uint32_t));
qpic_nand_wait_for_cmd_exec(1);
+ arch_clean_invalidate_cache_range((addr_t)&val, sizeof(uint32_t));
return val;
}
@@ -132,7 +135,7 @@
void
qpic_nand_erased_status_reset(struct cmd_element *cmd_list_ptr, uint8_t flags)
{
- uint32_t val = 0;
+ val = 0;
/* Reset the Erased Codeword/Page detection controller. */
val = NAND_ERASED_CW_DETECT_CFG_RESET_CTRL;
@@ -839,7 +842,9 @@
4,
BAM_DESC_INT_FLAG);
+ arch_clean_invalidate_cache_range((addr_t)bad_block, sizeof(uint32_t));
qpic_nand_wait_for_cmd_exec(num_desc);
+ arch_clean_invalidate_cache_range((addr_t)bad_block, sizeof(uint32_t));
status = qpic_nand_read_reg(NAND_FLASH_STATUS, 0);
@@ -866,7 +871,7 @@
{
unsigned cwperpage;
struct cfg_params params;
- uint8_t bad_block[4];
+ static uint8_t bad_block[4];
unsigned nand_ret = NANDC_RESULT_SUCCESS;
uint32_t blk = page / flash.num_pages_per_blk;
@@ -923,6 +928,7 @@
else
bbtbl[blk] = NAND_BAD_BLK_VALUE_IS_GOOD;
+
return nand_ret;
}
}
@@ -1001,7 +1007,9 @@
PA((uint32_t)cmd_list_ptr - (uint32_t)cmd_list_ptr_start),
BAM_DESC_INT_FLAG | BAM_DESC_CMD_FLAG) ;
num_desc = 2;
+ arch_clean_invalidate_cache_range((addr_t)&status, sizeof(uint32_t));
qpic_nand_wait_for_cmd_exec(num_desc);
+ arch_clean_invalidate_cache_range((addr_t)&status, sizeof(uint32_t));
status = qpic_nand_check_status(status);
@@ -1106,7 +1114,9 @@
int_flag | BAM_DESC_CMD_FLAG);
num_desc += 2;
+ arch_clean_invalidate_cache_range((addr_t)&status[i], sizeof(uint32_t));
qpic_nand_wait_for_cmd_exec(num_desc);
+ arch_clean_invalidate_cache_range((addr_t)&status[i], sizeof(uint32_t));
status[i] = qpic_nand_check_status(status[i]);
@@ -1539,12 +1549,14 @@
num_cmd_desc++;
bam_add_cmd_element(cmd_list_ptr, NAND_FLASH_STATUS, (uint32_t)PA((addr_t)&(flash_sts[i])), CE_READ_TYPE);
+ arch_clean_invalidate_cache_range((addr_t)&(flash_sts[i]), sizeof(uint32_t));
cmd_list_temp = (uint32_t *)cmd_list_ptr;
cmd_list_ptr++;
bam_add_cmd_element(cmd_list_ptr, NAND_BUFFER_STATUS, (uint32_t)PA((addr_t)&(buffer_sts[i])), CE_READ_TYPE);
+ arch_clean_invalidate_cache_range((addr_t)&(buffer_sts[i]), sizeof(uint32_t));
cmd_list_ptr++;
if (i == flash.cws_per_page - 1)
@@ -1567,6 +1579,8 @@
/* Notify BAM HW about the newly added descriptors */
bam_sys_gen_event(&bam, CMD_PIPE_INDEX, num_cmd_desc);
+ arch_clean_invalidate_cache_range((addr_t)&(flash_sts[i]), sizeof(uint32_t));
+ arch_clean_invalidate_cache_range((addr_t)&(buffer_sts[i]), sizeof(uint32_t));
}
qpic_nand_wait_for_data(DATA_PRODUCER_PIPE_INDEX);
diff --git a/project/msm8909.mk b/project/msm8909.mk
index 5fe2820..d8e5280 100644
--- a/project/msm8909.mk
+++ b/project/msm8909.mk
@@ -16,7 +16,7 @@
ENABLE_SMD_SUPPORT := 1
ENABLE_PWM_SUPPORT := true
-#ENABLE_BOOT_CONFIG_SUPPORT := 1
+ENABLE_BOOT_CONFIG_SUPPORT := 1
#DEFINES += WITH_DEBUG_DCC=1
DEFINES += WITH_DEBUG_LOG_BUF=1
diff --git a/target/msm8909/tools/makefile b/target/msm8909/tools/makefile
index da48f0d..ed43949 100644
--- a/target/msm8909/tools/makefile
+++ b/target/msm8909/tools/makefile
@@ -6,7 +6,13 @@
APPSBOOTOUT_DIR := $(BOOTLOADER_OUT)/../..
endif
-APPSBOOTHEADER: emmc_appsboot.mbn
+ifeq ($(EMMC_BOOT), 1)
+ABOOTMBN := emmc_appsboot.mbn
+else
+ABOOTMBN := appsboot.mbn
+endif
-emmc_appsboot.mbn: $(OUTELF_STRIP)
- $(hide) cp -f $(OUTELF_STRIP) $(APPSBOOTOUT_DIR)/emmc_appsboot.mbn
+APPSBOOTHEADER: $(ABOOTMBN)
+
+$(ABOOTMBN): $(OUTELF_STRIP)
+ $(hide) cp -f $(OUTELF_STRIP) $(APPSBOOTOUT_DIR)/$(ABOOTMBN)