Module Name: src Committed By: jmcneill Date: Fri Feb 27 20:40:09 UTC 2015
Modified Files: src/sys/arch/arm/cortex: armperiph.c pl310.c Log Message: allow arml2cc to be used on Cortex-A5 if the "offset" property is specified To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/cortex/armperiph.c cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/cortex/pl310.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/cortex/armperiph.c diff -u src/sys/arch/arm/cortex/armperiph.c:1.6 src/sys/arch/arm/cortex/armperiph.c:1.7 --- src/sys/arch/arm/cortex/armperiph.c:1.6 Fri Feb 27 18:43:28 2015 +++ src/sys/arch/arm/cortex/armperiph.c Fri Feb 27 20:40:09 2015 @@ -31,7 +31,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: armperiph.c,v 1.6 2015/02/27 18:43:28 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: armperiph.c,v 1.7 2015/02/27 20:40:09 jmcneill Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -64,6 +64,7 @@ static const struct armperiph_info a5_de { "armgic", 0x1000, 0x0100 }, { "a9tmr", 0x0200, 0 }, { "a9wdt", 0x0600, 0 }, + { "arml2cc", 0, 0 }, /* external; needs "offset" property */ { "", 0, 0 }, }; #endif Index: src/sys/arch/arm/cortex/pl310.c diff -u src/sys/arch/arm/cortex/pl310.c:1.16 src/sys/arch/arm/cortex/pl310.c:1.17 --- src/sys/arch/arm/cortex/pl310.c:1.16 Mon Dec 1 22:39:06 2014 +++ src/sys/arch/arm/cortex/pl310.c Fri Feb 27 20:40:09 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: pl310.c,v 1.16 2014/12/01 22:39:06 matt Exp $ */ +/* $NetBSD: pl310.c,v 1.17 2015/02/27 20:40:09 jmcneill Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pl310.c,v 1.16 2014/12/01 22:39:06 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pl310.c,v 1.17 2015/02/27 20:40:09 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -99,7 +99,8 @@ arml2cc_match(device_t parent, cfdata_t if (arml2cc_sc) return 0; - if (!CPU_ID_CORTEX_A9_P(curcpu()->ci_arm_cpuid)) + if (!CPU_ID_CORTEX_A9_P(curcpu()->ci_arm_cpuid) && + !CPU_ID_CORTEX_A5_P(curcpu()->ci_arm_cpuid)) return 0; if (strcmp(mpcaa->mpcaa_name, cf->cf_name) != 0) @@ -138,7 +139,17 @@ arml2cc_attach(device_t parent, device_t prop_dictionary_t dict = device_properties(self); uint32_t off; + aprint_naive("\n"); + if (!prop_dictionary_get_uint32(dict, "offset", &off)) { + if (CPU_ID_CORTEX_A5_P(curcpu()->ci_arm_cpuid)) { + /* + * PL310 on Cortex-A5 is external to PERIPHBASE, so + * "offset" property is required. + */ + aprint_normal(": not configured\n"); + return; + } off = L2CC_BASE; } @@ -172,7 +183,6 @@ arml2cc_attach(device_t parent, device_t const bool enabled_p = arml2cc_read_4(sc, L2C_CTL) != 0; - aprint_naive("\n"); aprint_normal(": ARM PL310%s L2 Cache Controller%s\n", revstr, enabled_p ? "" : " (disabled)");