diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index 4cdfd7365925f76ce9c1b8b021ce16b566855397..c07c821fb6b3c8121d90995b67f06dfb27f7a03a 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c @@ -93,6 +93,14 @@ int __init integrator_init(bool is_cp) static DEFINE_RAW_SPINLOCK(cm_lock); +/** + * cm_get - get the value from the CM_CTRL register + */ +u32 cm_get(void) +{ + return readl(cm_base + INTEGRATOR_HDR_CTRL_OFFSET); +} + /** * cm_control - update the CM_CTRL register. * @mask: bits to change diff --git a/arch/arm/mach-integrator/include/mach/cm.h b/arch/arm/mach-integrator/include/mach/cm.h index 202e6a57f1006a3b1ae820d4f229007131bbee84..ae6085f1db197cea704dad462ab2662ca5c76f52 100644 --- a/arch/arm/mach-integrator/include/mach/cm.h +++ b/arch/arm/mach-integrator/include/mach/cm.h @@ -1,6 +1,7 @@ /* - * update the core module control register. + * access the core module control register. */ +u32 cm_get(void); void cm_control(u32, u32); #define CM_CTRL __io_address(INTEGRATOR_HDR_CTRL) diff --git a/arch/arm/mach-integrator/leds.c b/arch/arm/mach-integrator/leds.c index 7a7f6d3273bf165b515eb8c4454731848ef661f0..ed82535845f7b1ab1bdaea3eb173be2c0fd61639 100644 --- a/arch/arm/mach-integrator/leds.c +++ b/arch/arm/mach-integrator/leds.c @@ -78,7 +78,7 @@ static void cm_led_set(struct led_classdev *cdev, static enum led_brightness cm_led_get(struct led_classdev *cdev) { - u32 reg = readl(CM_CTRL); + u32 reg = cm_get(); return (reg & CM_CTRL_LED) ? LED_FULL : LED_OFF; }