Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: nvbctlib_ap20.c

Issue 6579034: Add the device type/parameters support for cbootimage tool. (Closed) Base URL: http://git.chromium.org/git/cbootimage.git@master
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « nvbctlib.h ('k') | nvboot_bct.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: nvbctlib_ap20.c
diff --git a/nvbctlib_ap20.c b/nvbctlib_ap20.c
index 2535432916f0f5dcfd7f77ed4aea235d9648e9d5..2f803b58b0392ac40a28ae1fc5bafe3a2c187600 100644
--- a/nvbctlib_ap20.c
+++ b/nvbctlib_ap20.c
@@ -28,6 +28,16 @@
/* nvbctlib_ap20.c: The implementation of the nvbctlib API for AP20. */
/* Definitions that simplify the code which follows. */
+#define CASE_GET_DEV_PARAM(dev, x) \
+case nvbct_lib_id_##dev##_##x:\
+ *data = bct_ptr->dev_params[set].dev##_params.x; \
+ break
+
+#define CASE_SET_DEV_PARAM(dev, x) \
+case nvbct_lib_id_##dev##_##x:\
+ bct_ptr->dev_params[set].dev##_params.x = data; \
+ break
+
#define CASE_GET_BL_PARAM(x) \
case nvbct_lib_id_bl_##x:\
*data = bct_ptr->bootloader[set].x; \
@@ -51,7 +61,7 @@ case nvbct_lib_id_##id:\
#define CASE_GET_CONST_PREFIX(id, val_prefix) \
case nvbct_lib_id_##id:\
- *data = val_prefix##id; \
+ *data = val_prefix##_##id; \
break
#define CASE_SET_NVU32(id) \
@@ -72,6 +82,68 @@ case nvbct_lib_id_##id:\
memcpy(&(bct_ptr->id), data, size); \
break
+static int
+getdev_param(u_int32_t set,
+ nvbct_lib_id id,
+ u_int32_t *data,
+ u_int8_t *bct)
+{
+ nvboot_config_table *bct_ptr = (nvboot_config_table*)bct;
+
+ if (data == NULL || bct == NULL)
+ return -ENODATA;
+
+ switch (id) {
+ CASE_GET_DEV_PARAM(sdmmc, clock_divider);
+ CASE_GET_DEV_PARAM(sdmmc, data_width);
+ CASE_GET_DEV_PARAM(sdmmc, max_power_class_supported);
+
+ CASE_GET_DEV_PARAM(spiflash, clock_source);
+ CASE_GET_DEV_PARAM(spiflash, clock_divider);
+ CASE_GET_DEV_PARAM(spiflash, read_command_type_fast);
+
+ case nvbct_lib_id_dev_type:
+ *data = bct_ptr->dev_type[set];
+ break;
+
+ default:
+ return -ENODATA;
+ }
+
+ return 0;
+}
+
+static int
+setdev_param(u_int32_t set,
+ nvbct_lib_id id,
+ u_int32_t data,
+ u_int8_t *bct)
+{
+ nvboot_config_table *bct_ptr = (nvboot_config_table*)bct;
+
+ if (bct == NULL)
+ return -ENODATA;
+
+ switch (id) {
+ CASE_SET_DEV_PARAM(sdmmc, clock_divider);
+ CASE_SET_DEV_PARAM(sdmmc, data_width);
+ CASE_SET_DEV_PARAM(sdmmc, max_power_class_supported);
+
+ CASE_SET_DEV_PARAM(spiflash, clock_source);
+ CASE_SET_DEV_PARAM(spiflash, clock_divider);
+ CASE_SET_DEV_PARAM(spiflash, read_command_type_fast);
+
+ case nvbct_lib_id_dev_type:
+ bct_ptr->dev_type[set] = data;
+ break;
+
+ default:
+ return -ENODATA;
+ }
+
+ return 0;
+
+}
static int
getbl_param(u_int32_t set,
@@ -166,6 +238,7 @@ bct_get_value(nvbct_lib_id id, u_int32_t *data, u_int8_t *bct)
CASE_GET_NVU32(block_size_log2);
CASE_GET_NVU32(page_size_log2);
CASE_GET_NVU32(partition_size);
+ CASE_GET_NVU32(num_param_sets);
CASE_GET_NVU32(bootloader_used);
/*
@@ -199,6 +272,15 @@ bct_get_value(nvbct_lib_id id, u_int32_t *data, u_int8_t *bct)
CASE_GET_CONST(max_bct_search_blks, NVBOOT_MAX_BCT_SEARCH_BLOCKS);
+ CASE_GET_CONST_PREFIX(dev_type_sdmmc, nvboot);
+ CASE_GET_CONST_PREFIX(dev_type_spi, nvboot);
+ CASE_GET_CONST_PREFIX(sdmmc_data_width_4bit, nvboot);
+ CASE_GET_CONST_PREFIX(sdmmc_data_width_8bit, nvboot);
+ CASE_GET_CONST_PREFIX(spi_clock_source_pllp_out0, nvboot);
+ CASE_GET_CONST_PREFIX(spi_clock_source_pllc_out0, nvboot);
+ CASE_GET_CONST_PREFIX(spi_clock_source_pllm_out0, nvboot);
+ CASE_GET_CONST_PREFIX(spi_clock_source_clockm, nvboot);
+
default:
return -ENODATA;
}
@@ -221,6 +303,7 @@ bct_set_value(nvbct_lib_id id, u_int32_t data, u_int8_t *bct)
CASE_SET_NVU32(block_size_log2);
CASE_SET_NVU32(page_size_log2);
CASE_SET_NVU32(partition_size);
+ CASE_SET_NVU32(num_param_sets);
CASE_SET_NVU32(bootloader_used);
default:
@@ -279,4 +362,8 @@ nvbct_lib_get_fns(nvbct_lib_fns *fns)
fns->getbl_param = getbl_param;
fns->setbl_param = setbl_param;
+
+ fns->getdev_param = getdev_param;
+ fns->setdev_param = setdev_param;
+
}
« no previous file with comments | « nvbctlib.h ('k') | nvboot_bct.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698