diff options
author | Quinn Jensen <quinn.jensen@freescale.com> | 2007-10-24 21:22:11 -0600 |
---|---|---|
committer | Quinn Jensen <quinn.jensen@freescale.com> | 2007-10-24 21:22:11 -0600 |
commit | 40b728a43e3aba1a810ea3a8332e90a606e99807 (patch) | |
tree | a3be49327825f7f50129838020c815acbdf8b55c | |
parent | 19f48fbe00e75572b2e28fd031bed5d0fa0d73f6 (diff) |
CR ENGR00049086: fix scc fail fuse not blown
Patch for CR ENGR00049086: fix scc fail fuse not blown.
Deregistering the driver properly to prevent boot crash if SCC fuse are
not blown. Applies to linux 2.6.22 kernel for MX platforms.
http://www.bitshrine.org/gpp/linux-2.6.22-mx-CR-ENGR00049086-fix-scc-fail-fuse-not-blow.patch
-rw-r--r-- | arch/arm/mach-mx27/devices.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-mx3/devices.c | 6 | ||||
-rw-r--r-- | drivers/mxc/security/mxc_scc.c | 7 |
3 files changed, 10 insertions, 9 deletions
diff --git a/arch/arm/mach-mx27/devices.c b/arch/arm/mach-mx27/devices.c index 0df427998b7c..e0381f082d0d 100644 --- a/arch/arm/mach-mx27/devices.c +++ b/arch/arm/mach-mx27/devices.c @@ -127,13 +127,13 @@ static inline void mxc_init_wdt(void) */ #if defined(CONFIG_MXC_SECURITY_SCC) || defined(CONFIG_MXC_SECURITY_SCC_MODULE) static struct platform_device mxc_scc_device = { - .name = "mxc_scc", - .id = 0, + .name = "mxc_scc", + .id = 0, }; static void mxc_init_scc(void) { - platform_device_register(&mxc_scc_device); + platform_device_register(&mxc_scc_device); } #else static inline void mxc_init_scc(void) diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c index 51ff2253cef5..eef2f4ceb6ba 100644 --- a/arch/arm/mach-mx3/devices.c +++ b/arch/arm/mach-mx3/devices.c @@ -340,13 +340,13 @@ static inline void mxc_init_ir(void) */ #if defined(CONFIG_MXC_SECURITY_SCC) || defined(CONFIG_MXC_SECURITY_SCC_MODULE) static struct platform_device mxc_scc_device = { - .name = "mxc_scc", - .id = 0, + .name = "mxc_scc", + .id = 0, }; static void mxc_init_scc(void) { - platform_device_register(&mxc_scc_device); + platform_device_register(&mxc_scc_device); } #else static inline void mxc_init_scc(void) diff --git a/drivers/mxc/security/mxc_scc.c b/drivers/mxc/security/mxc_scc.c index 1d9a782bbe3f..c8257b532639 100644 --- a/drivers/mxc/security/mxc_scc.c +++ b/drivers/mxc/security/mxc_scc.c @@ -273,11 +273,12 @@ static int mxc_scc_probe(struct platform_device *pdev) /* See whether there is an SCC available */ if (0 && !SCC_ENABLED()) { - pr_debug + printk ("SCC: Fuse for SCC is set to disabled. Exiting.\n"); } else { /* Map the SCC (SCM and SMN) memory on the internal bus into kernel address space */ + scc_base = ioremap_nocache(SCC_BASE, SCC_ADDRESS_RANGE); /* If that worked, we can try to use the SCC */ @@ -351,7 +352,7 @@ static int mxc_scc_probe(struct platform_device *pdev) */ if (scc_availability == SCC_STATUS_CHECKING || scc_availability == SCC_STATUS_UNIMPLEMENTED) { - scc_cleanup(); + mxc_scc_remove(pdev); } else { return_value = 0; /* All is well */ } @@ -371,7 +372,7 @@ static int mxc_scc_probe(struct platform_device *pdev) } /* mxc_scc_probe */ /*****************************************************************************/ -/* fn scc_cleanup() */ +/* fn mxc_scc_remove() */ /*****************************************************************************/ /*! * Perform cleanup before driver/module is unloaded by setting the machine |