arm: omap3: am35x: Don't mark missing features as present
Subsystems (3)
PATCH 1/1 arm: omap3: am35x: Don't mark missing features as present
From: "Mark A. Greer" <[email protected]>
The Chip Identification register on the am35x family of SoCs has bits 12, 7:5, and 3:2 marked as reserved and are read as zeroes. Unfortunately, on other omap SoCs, a 0 bit means a feature is "Full Use" so the OMAP3_CHECK_FEATURE() macro called by omap3_check_features() will incorrectly interpret those zeroes to mean that a feature is present even though it isn't. To fix that, the feature bits that are incorrectly set (namely, OMAP3_HAS_IVA and OMAP3_HAS_ISP) need to be cleared after all of the calls to OMAP3_CHECK_FEATURE() in omap3_check_features() are made.
--- arch/arm/mach-omap2/id.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
arch/arm/mach-omap2/id.c +11 -0
@@ -248,6 +248,17 @@ void __init omap3xxx_check_features(void) omap_features |=OMAP3_HAS_SDRC ;/* +* am35x fixups: +* - The am35x Chip ID register has bits 12, 7:5, and 3:2 marked as +* reserved and therefore return 0 when read. Unfortunately, +* OMAP3_CHECK_FEATURE() will interpret some of those zeroes to +* mean that a feature is present even though it isn't so clear +* the incorrectly set feature bits. +*/ +if (cpu_is_omap3505 () ||cpu_is_omap3517 ()) + omap_features &= ~(OMAP3_HAS_IVA |OMAP3_HAS_ISP ); + +/* * TODO: Get additional info (where applicable) * e.g. Size of L2 cache. */
Signature · 1 line
1.7.9.4
PATCH 1/1 arm: omap3: am35x: Don't mark missing features as present
Quoted 25 lines · Mark A. Greer
From: "Mark A. Greer" <[email protected]>
The Chip Identification register on the am35x family of SoCs has bits 12, 7:5, and 3:2 marked as reserved and are read as zeroes. Unfortunately, on other omap SoCs, a 0 bit means a feature is "Full Use" so the
OMAP3_CHECK_FEATURE()macro called byomap3_check_features()will incorrectly interpret those zeroes to mean that a feature is present even though it isn't. To fix that, the feature bits that are incorrectly set (namely,OMAP3_HAS_IVAandOMAP3_HAS_ISP) need to be cleared after all of the calls toOMAP3_CHECK_FEATURE()inomap3_check_features()are made.Signed-off-by Mark A. Greer <[email protected]>--- arch/arm/mach-omap2/id.c | 11 +++++++++++ 1 file changed, 11 insertions(+)arch/arm/mach-omap2/id.c +0
-0@@ -248,6 +248,17 @@ void __init omap3xxx_check_features(void) omap_features |=OMAP3_HAS_SDRC ;
arch/arm/mach-omap2/id.c void __init omap3xxx_check_features(void) · line 259
Quoted 10 lines
arch/arm/mach-omap2/id.c +9
-0/* +* am35x fixups: +* - The am35x Chip ID register has bits 12, 7:5, and 3:2 marked as +* reserved and therefore return 0 when read. Unfortunately, +* OMAP3_CHECK_FEATURE() will interpret some of those zeroes to +* mean that a feature is present even though it isn't so clear +* the incorrectly set feature bits. +*/ +if (cpu_is_omap3505 () ||cpu_is_omap3517 ()) + omap_features &= ~(OMAP3_HAS_IVA |OMAP3_HAS_ISP );
I just sent a series that removes these cpu_is macros:
http://marc.info/?l=linux-omap&m=133548306205953&w=2
It looks like I can just replace the above with 'if (cpu_is_am35xx()', correct?
Since you have various AM35x devices, could you could give my series a spin and make this change? If it works, and acked-by/tested-by on my series would be appreciated as well.
Thanks,
Kevin
Quoted 4 lines
arch/arm/mach-omap2/id.c +1
-0+/* * TODO: Get additional info (where applicable) * e.g. Size of L2 cache. */
PATCH 1/1 arm: omap3: am35x: Don't mark missing features as present
Quoted 40 lines · Kevin Hilman
Quoted 25 lines · Mark A. Greer
From: "Mark A. Greer" <[email protected]>
The Chip Identification register on the am35x family of SoCs has bits 12, 7:5, and 3:2 marked as reserved and are read as zeroes. Unfortunately, on other omap SoCs, a 0 bit means a feature is "Full Use" so the
OMAP3_CHECK_FEATURE()macro called byomap3_check_features()will incorrectly interpret those zeroes to mean that a feature is present even though it isn't. To fix that, the feature bits that are incorrectly set (namely,OMAP3_HAS_IVAandOMAP3_HAS_ISP) need to be cleared after all of the calls toOMAP3_CHECK_FEATURE()inomap3_check_features()are made.Signed-off-by Mark A. Greer <[email protected]>--- arch/arm/mach-omap2/id.c | 11 +++++++++++ 1 file changed, 11 insertions(+)arch/arm/mach-omap2/id.c +0
-0@@ -248,6 +248,17 @@ void __init omap3xxx_check_features(void) omap_features |=OMAP3_HAS_SDRC ;arch/arm/mach-omap2/id.c void __init omap3xxx_check_features(void) · line 259
Quoted 10 lines
arch/arm/mach-omap2/id.c +9
-0/* +* am35x fixups: +* - The am35x Chip ID register has bits 12, 7:5, and 3:2 marked as +* reserved and therefore return 0 when read. Unfortunately, +* OMAP3_CHECK_FEATURE() will interpret some of those zeroes to +* mean that a feature is present even though it isn't so clear +* the incorrectly set feature bits. +*/ +if (cpu_is_omap3505 () ||cpu_is_omap3517 ()) + omap_features &= ~(OMAP3_HAS_IVA |OMAP3_HAS_ISP );I just sent a series that removes these
cpu_ismacros:
Quoted 3 lines
http://marc.info/?l=linux-omap&m=133548306205953&w=2It looks like I can just replace the above with 'if (
cpu_is_am35xx()', correct?
Yes.
Quoted 3 lines
Since you have various AM35x devices, could you could give my series a spin and make this change? If it works, and acked-by/tested-by on my series would be appreciated as well.
Sure. I already have them ported to your series. I have to leave early today but I'll test them & get them to you on Monday. Sorry for the delay.
Mark
PATCH v2 1/1 arm: omap3: am35x: Don't mark missing features as present
In reply to Mark A. GreerFrom: "Mark A. Greer" <[email protected]>
The Chip Identification register on the am35x family of SoCs has bits 12, 7:5, and 3:2 marked as reserved and are read as zeroes. Unfortunately, on other omap SoCs, a 0 bit means a feature is "Full Use" so the OMAP3_CHECK_FEATURE() macro called by omap3_check_features() will incorrectly interpret those zeroes to mean that a feature is present even though it isn't. To fix that, the feature bits that are incorrectly set (namely, OMAP3_HAS_IVA and OMAP3_HAS_ISP) need to be cleared after all of the calls to OMAP3_CHECK_FEATURE() in omap3_check_features() are made.
--- arch/arm/mach-omap2/id.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
arch/arm/mach-omap2/id.c +11 -0
@@ -247,6 +247,17 @@ void __init omap3xxx_check_features(void) omap_features |=OMAP3_HAS_SDRC ;/* +* am35x fixups: +* - The am35x Chip ID register has bits 12, 7:5, and 3:2 marked as +* reserved and therefore return 0 when read. Unfortunately, +* OMAP3_CHECK_FEATURE() will interpret some of those zeroes to +* mean that a feature is present even though it isn't so clear +* the incorrectly set feature bits. +*/ +if (cpu_is_am35xx ()) + omap_features &= ~(OMAP3_HAS_IVA |OMAP3_HAS_ISP ); + +/* * TODO: Get additional info (where applicable) * e.g. Size of L2 cache. */
Signature · 1 line
1.7.9.4
PATCH v2 1/1 arm: omap3: am35x: Don't mark missing features as present
Quoted 13 lines · Mark A. Greer
From: "Mark A. Greer" <[email protected]>
The Chip Identification register on the am35x family of SoCs has bits 12, 7:5, and 3:2 marked as reserved and are read as zeroes. Unfortunately, on other omap SoCs, a 0 bit means a feature is "Full Use" so the
OMAP3_CHECK_FEATURE()macro called byomap3_check_features()will incorrectly interpret those zeroes to mean that a feature is present even though it isn't. To fix that, the feature bits that are incorrectly set (namely,OMAP3_HAS_IVAandOMAP3_HAS_ISP) need to be cleared after all of the calls toOMAP3_CHECK_FEATURE()inomap3_check_features()are made.
Quoted 1 line
Signed-off-by Mark A. Greer <[email protected]>
Looks good, thanks.
I'll queue this one up on top of my AM35x cpu_is cleanups (branch:
for_3.5/cleanup/am35x-cpu-is)
Kevin
Quoted 26 lines
--- arch/arm/mach-omap2/id.c | 11 +++++++++++ 1 file changed, 11 insertions(+)arch/arm/mach-omap2/id.c +11
-0@@ -247,6 +247,17 @@ void __init omap3xxx_check_features(void) omap_features |=OMAP3_HAS_SDRC ;/* +* am35x fixups: +* - The am35x Chip ID register has bits 12, 7:5, and 3:2 marked as +* reserved and therefore return 0 when read. Unfortunately, +* OMAP3_CHECK_FEATURE() will interpret some of those zeroes to +* mean that a feature is present even though it isn't so clear +* the incorrectly set feature bits. +*/ +if (cpu_is_am35xx ()) + omap_features &= ~(OMAP3_HAS_IVA |OMAP3_HAS_ISP ); + +/* * TODO: Get additional info (where applicable) * e.g. Size of L2 cache. */