summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-05-06 21:36:12 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2015-05-06 21:36:12 +0200
commit4a854c9f4926d96a08ae4b982014ae860a628414 (patch)
tree5e55b243fce5ef82148f25a7ac870656fcd785f5 /arch
parent15e906affd3f20c99d27ee33dcf8168ee5c5d050 (diff)
parent29abc10d44c221ce19cdd83da45178f077924db6 (diff)
downloadbarebox-4a854c9f4926d96a08ae4b982014ae860a628414.tar.gz
barebox-4a854c9f4926d96a08ae4b982014ae860a628414.tar.xz
Merge branch 'for-next/imx'
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-imx/Kconfig40
-rw-r--r--arch/arm/mach-imx/clk-imx6.c43
2 files changed, 83 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 4d257a87a6..c713477701 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -675,6 +675,46 @@ config IMX_OCOTP_WRITE
mw -l -d /dev/imx-ocotp 0x8C 0x00001234
mw -l -d /dev/imx-ocotp 0x88 0x56789ABC
+config HABV4
+ tristate "HABv4 support"
+ depends on ARCH_IMX6
+ help
+ High Assurance Boot, as found on i.MX28/i.MX6.
+
+if HABV4
+
+config HABV4_TABLE_BIN
+ string "Path to SRK table"
+ default "../crts/SRK_1_2_3_4_table.bin"
+ help
+ Path to the Super Root Key (SRK) table, produced by the
+ Freescale Code Signing Tool (cst).
+
+ This file will be inserted into the Command Sequence File
+ (CSF) when using the CSF template that comes with barebox.
+
+config HABV4_CSF_CRT_PEM
+ string "Path to CSF certificate"
+ default "../crts/CSF1_1_sha256_4096_65537_v3_usr_crt.pem"
+ help
+ Path to the Command Sequence File (CSF) certificate, produced by the
+ Freescale Public Key Infrastructure (PKI) script.
+
+ This file will be inserted into the Command Sequence File
+ (CSF) when using the CSF template that comes with barebox.
+
+config HABV4_IMG_CRT_PEM
+ string "Path to IMG certificate"
+ default "../crts/IMG_1_sha256_4096_65537_v3_usr_crt.pem"
+ help
+ Path to the Image certificate, produced by the Freescale
+ Public Key Infrastructure (PKI) script.
+
+ This file will be inserted into the Command Sequence File
+ (CSF) when using the CSF template that comes with barebox.
+
+endif
+
endmenu
endif
diff --git a/arch/arm/mach-imx/clk-imx6.c b/arch/arm/mach-imx/clk-imx6.c
index f51e559505..f18ad402a6 100644
--- a/arch/arm/mach-imx/clk-imx6.c
+++ b/arch/arm/mach-imx/clk-imx6.c
@@ -121,6 +121,11 @@ static const char *vdo_axi_sels[] = {
"ahb",
};
+static const char *cko_sels[] = {
+ "cko1",
+ "cko2",
+};
+
static const char *cko1_sels[] = {
"pll3_usb_otg",
"pll2_bus",
@@ -140,6 +145,41 @@ static const char *cko1_sels[] = {
"pll4_audio",
};
+static const char *cko2_sels[] = {
+ "mmdc_ch0_axi",
+ "mmdc_ch1_axi",
+ "usdhc4",
+ "usdhc1",
+ "gpu2d_axi",
+ "dummy",
+ "ecspi_root",
+ "gpu3d_axi",
+ "usdhc3",
+ "dummy",
+ "arm",
+ "ipu1",
+ "ipu2",
+ "vdo_axi",
+ "osc",
+ "gpu2d_core",
+ "gpu3d_core",
+ "usdhc2",
+ "ssi1",
+ "ssi2",
+ "ssi3",
+ "gpu3d_shader",
+ "vpu_axi",
+ "can_root",
+ "ldb_di0",
+ "ldb_di1",
+ "esai",
+ "eim_slow",
+ "uart_serial",
+ "spdif",
+ "asrc",
+ "hsi_tx",
+};
+
static const char *ipu_sels[] = {
"mmdc_ch0_axi_podf",
"pll2_pfd2_396m",
@@ -367,6 +407,8 @@ static int imx6_ccm_probe(struct device_d *dev)
clks[IMX6QDL_CLK_EIM_SLOW_SEL] = imx_clk_mux("eim_slow_sel", base + 0x1c, 29, 2, eim_sels, ARRAY_SIZE(eim_sels));
clks[IMX6QDL_CLK_VDO_AXI_SEL] = imx_clk_mux("vdo_axi_sel", base + 0x18, 11, 1, vdo_axi_sels, ARRAY_SIZE(vdo_axi_sels));
clks[IMX6QDL_CLK_CKO1_SEL] = imx_clk_mux("cko1_sel", base + 0x60, 0, 4, cko1_sels, ARRAY_SIZE(cko1_sels));
+ clks[IMX6QDL_CLK_CKO2_SEL] = imx_clk_mux("cko2_sel", base + 0x60, 16, 5, cko2_sels, ARRAY_SIZE(cko2_sels));
+ clks[IMX6QDL_CLK_CKO] = imx_clk_mux("cko", base + 0x60, 8, 1, cko_sels, ARRAY_SIZE(cko_sels));
clks[IMX6QDL_CLK_PCIE_AXI_SEL] = imx_clk_mux("pcie_axi_sel", base + 0x18, 10, 1, pcie_axi_sels, ARRAY_SIZE(pcie_axi_sels));
/* name reg shift width busy: reg, shift parent_names num_parents */
@@ -390,6 +432,7 @@ static int imx6_ccm_probe(struct device_d *dev)
clks[IMX6QDL_CLK_EIM_PODF] = imx_clk_divider("eim_podf", "eim_sel", base + 0x1c, 20, 3);
clks[IMX6QDL_CLK_EIM_SLOW_PODF] = imx_clk_divider("eim_slow_podf", "eim_slow_sel", base + 0x1c, 23, 3);
clks[IMX6QDL_CLK_CKO1_PODF] = imx_clk_divider("cko1_podf", "cko1_sel", base + 0x60, 4, 3);
+ clks[IMX6QDL_CLK_CKO2_PODF] = imx_clk_divider("cko2_podf", "cko2_sel", base + 0x60, 21, 3);
/* name parent_name reg shift width busy: reg, shift */
clks[IMX6QDL_CLK_AXI] = imx_clk_busy_divider("axi", "axi_sel", base + 0x14, 16, 3, base + 0x48, 0);