---
 c/src/lib/libbsp/powerpc/shared/clock/clock.c | 311 +++++++++++++-------------
 1 file changed, 158 insertions(+), 153 deletions(-)

diff --git a/c/src/lib/libbsp/powerpc/shared/clock/clock.c 
b/c/src/lib/libbsp/powerpc/shared/clock/clock.c
index ed482fa..e9b1d4d 100644
--- a/c/src/lib/libbsp/powerpc/shared/clock/clock.c
+++ b/c/src/lib/libbsp/powerpc/shared/clock/clock.c
@@ -42,10 +42,6 @@ extern uint32_t bsp_time_base_frequency;
 
 volatile uint32_t Clock_driver_ticks = 0;
 
-rtems_device_major_number rtems_clock_major = UINT32_MAX;
-
-rtems_device_minor_number rtems_clock_minor = UINT32_MAX;
-
 static uint32_t ppc_clock_decrementer_value = PPC_CLOCK_DECREMENTER_MAX;
 
 static uint32_t ppc_clock_next_time_base;
@@ -54,212 +50,221 @@ static uint64_t ppc_clock_factor;
 
 static void ppc_clock_no_tick(void)
 {
-       /* Do nothing */
+  /* Do nothing */
 }
 
 static void (*ppc_clock_tick)(void) = ppc_clock_no_tick;
 
-static int ppc_clock_exception_handler( BSP_Exception_frame *frame, unsigned 
number)
+static int ppc_clock_exception_handler(
+  BSP_Exception_frame *frame,
+  unsigned number
+)
 {
-       uint32_t delta = ppc_clock_decrementer_value;
-       uint32_t next = ppc_clock_next_time_base;
-       uint32_t dec = 0;
-       uint32_t now = 0;
-       uint32_t msr = 0;
+  uint32_t delta = ppc_clock_decrementer_value;
+  uint32_t next = ppc_clock_next_time_base;
+  uint32_t dec = 0;
+  uint32_t now = 0;
+  uint32_t msr = 0;
 
-       do {
-               /* Increment clock ticks */
-               Clock_driver_ticks += 1;
+  do {
+    /* Increment clock ticks */
+    Clock_driver_ticks += 1;
 
-               /* Enable external exceptions */
-               msr = ppc_external_exceptions_enable();
+    /* Enable external exceptions */
+    msr = ppc_external_exceptions_enable();
 
-               /* Call clock ticker  */
-               ppc_clock_tick();
+    /* Call clock ticker  */
+    ppc_clock_tick();
 
-               /* Restore machine state */
-               ppc_external_exceptions_disable( msr);
+    /* Restore machine state */
+    ppc_external_exceptions_disable( msr);
 
-               /* Next time base */
-               next += delta;
+    /* Next time base */
+    next += delta;
 
-               /* Current time */
-               now = ppc_time_base();
+    /* Current time */
+    now = ppc_time_base();
 
-               /* New decrementer value */
-               dec = next - now;
-       } while (dec > delta);
+    /* New decrementer value */
+    dec = next - now;
+  } while (dec > delta);
 
-       /* Set decrementer */
-       ppc_set_decrementer_register( dec);
+  /* Set decrementer */
+  ppc_set_decrementer_register( dec);
 
-       /* Expected next time base */
-       ppc_clock_next_time_base = next;
+  /* Expected next time base */
+  ppc_clock_next_time_base = next;
 
-       return 0;
+  return 0;
 }
 
-static int ppc_clock_exception_handler_first( BSP_Exception_frame *frame, 
unsigned number)
+static int ppc_clock_exception_handler_first(
+  BSP_Exception_frame *frame,
+  unsigned number
+)
 {
-       /* We have to clear the first pending decrementer exception this way */
+  /* We have to clear the first pending decrementer exception this way */
 
-       if (ppc_decrementer_register() >= 0x80000000) {
-               ppc_clock_exception_handler( frame, number);
-       }
+  if (ppc_decrementer_register() >= 0x80000000) {
+    ppc_clock_exception_handler( frame, number);
+  }
 
-       ppc_exc_set_handler( ASM_DEC_VECTOR, ppc_clock_exception_handler);
+  ppc_exc_set_handler( ASM_DEC_VECTOR, ppc_clock_exception_handler);
 
-       return 0;
+  return 0;
 }
 
-static int ppc_clock_exception_handler_booke( BSP_Exception_frame *frame, 
unsigned number)
+static int ppc_clock_exception_handler_booke(
+  BSP_Exception_frame *frame,
+  unsigned number
+)
 {
-       uint32_t msr;
+  uint32_t msr;
 
-       /* Acknowledge decrementer request */
-       PPC_SET_SPECIAL_PURPOSE_REGISTER( BOOKE_TSR, BOOKE_TSR_DIS);
+  /* Acknowledge decrementer request */
+  PPC_SET_SPECIAL_PURPOSE_REGISTER( BOOKE_TSR, BOOKE_TSR_DIS);
 
-       /* Increment clock ticks */
-       Clock_driver_ticks += 1;
+  /* Increment clock ticks */
+  Clock_driver_ticks += 1;
 
-       /* Enable external exceptions */
-       msr = ppc_external_exceptions_enable();
+  /* Enable external exceptions */
+  msr = ppc_external_exceptions_enable();
 
-       /* Call clock ticker  */
-       ppc_clock_tick();
+  /* Call clock ticker  */
+  ppc_clock_tick();
 
-       /* Restore machine state */
-       ppc_external_exceptions_disable( msr);
+  /* Restore machine state */
+  ppc_external_exceptions_disable( msr);
 
-       return 0;
+  return 0;
 }
 
 static int ppc_clock_exception_handler_ppc405(BSP_Exception_frame *frame, 
unsigned number)
 {
-       uint32_t msr;
+  uint32_t msr;
 
-       /* Acknowledge PIT request */
-       PPC_SET_SPECIAL_PURPOSE_REGISTER(PPC405_TSR, BOOKE_TSR_DIS);
+  /* Acknowledge PIT request */
+  PPC_SET_SPECIAL_PURPOSE_REGISTER(PPC405_TSR, BOOKE_TSR_DIS);
 
-       /* Increment clock ticks */
-       Clock_driver_ticks += 1;
+  /* Increment clock ticks */
+  Clock_driver_ticks += 1;
 
-       /* Enable external exceptions */
-       msr = ppc_external_exceptions_enable();
+  /* Enable external exceptions */
+  msr = ppc_external_exceptions_enable();
 
-       /* Call clock ticker  */
-       ppc_clock_tick();
+  /* Call clock ticker  */
+  ppc_clock_tick();
 
-       /* Restore machine state */
-       ppc_external_exceptions_disable(msr);
+  /* Restore machine state */
+  ppc_external_exceptions_disable(msr);
 
-       return 0;
+  return 0;
 }
 
 static uint32_t ppc_clock_nanoseconds_since_last_tick(void)
 {
-       uint64_t k = ppc_clock_factor;
-       uint32_t c = ppc_decrementer_register();
-       uint32_t i = ppc_clock_decrementer_value + 1;
+  uint64_t k = ppc_clock_factor;
+  uint32_t c = ppc_decrementer_register();
+  uint32_t i = ppc_clock_decrementer_value + 1;
 
-       return (uint32_t) (((i - c) * k) >> 32);
+  return (uint32_t) (((i - c) * k) >> 32);
 }
 
 static uint32_t ppc_clock_nanoseconds_since_last_tick_ppc405(void)
 {
-       uint64_t k = ppc_clock_factor;
-       uint32_t i = ppc_clock_decrementer_value;
-       uint32_t c = i - PPC_SPECIAL_PURPOSE_REGISTER(PPC405_PIT);
+  uint64_t k = ppc_clock_factor;
+  uint32_t i = ppc_clock_decrementer_value;
+  uint32_t c = i - PPC_SPECIAL_PURPOSE_REGISTER(PPC405_PIT);
 
-       if ((PPC_SPECIAL_PURPOSE_REGISTER(PPC405_TSR) & BOOKE_TSR_DIS) != 0) {
-               c = i - PPC_SPECIAL_PURPOSE_REGISTER(PPC405_PIT) + i;
-       }
+  if ((PPC_SPECIAL_PURPOSE_REGISTER(PPC405_TSR) & BOOKE_TSR_DIS) != 0) {
+    c = i - PPC_SPECIAL_PURPOSE_REGISTER(PPC405_PIT) + i;
+  }
 
-       return (uint32_t) ((c * k) >> 32);
+  return (uint32_t) ((c * k) >> 32);
 }
 
 void Clock_exit(void)
 {
-       /* Set the decrementer to the maximum value */
-       ppc_set_decrementer_register( PPC_CLOCK_DECREMENTER_MAX);
+  /* Set the decrementer to the maximum value */
+  ppc_set_decrementer_register( PPC_CLOCK_DECREMENTER_MAX);
 
-       /* Use default clock handler */
-       ppc_clock_tick = ppc_clock_no_tick;
+  /* Use default clock handler */
+  ppc_clock_tick = ppc_clock_no_tick;
 }
 
-rtems_device_driver Clock_initialize( rtems_device_major_number major, 
rtems_device_minor_number minor, void *arg)
+rtems_device_driver Clock_initialize(
+  rtems_device_major_number major,
+  rtems_device_minor_number minor,
+  void *arg
+)
 {
-       uint64_t frequency = bsp_time_base_frequency;
-       uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick();
-       uint32_t interval = (uint32_t) ((frequency * us_per_tick) / 1000000);
-
-       /* Make major/minor available to others such as shared memory driver */
-       rtems_clock_major = major;
-       rtems_clock_minor = minor;
-
-       /*
-        * Set default ticker.
-        *
-        * The function rtems_clock_tick() returns a status code.  This value
-        * will be discarded since the RTEMS documentation claims that it is
-        * always successful.
-        */
-       ppc_clock_tick = (void (*)(void)) rtems_clock_tick;
-
-       /* Factor for nano seconds extension */
-       ppc_clock_factor = (1000000000ULL << 32) / frequency;
-
-       if (ppc_cpu_is_bookE() != PPC_BOOKE_405) {
-               /* Decrementer value */
-               ppc_clock_decrementer_value = interval - 1;
-
-               /* Check decrementer value */
-               if (ppc_clock_decrementer_value == 0) {
-                       ppc_clock_decrementer_value = PPC_CLOCK_DECREMENTER_MAX;
-                       RTEMS_SYSLOG_ERROR( "decrementer value would be zero, 
will be set to maximum value instead\n");
-               }
-
-               /* Set the nanoseconds since last tick handler */
-               rtems_clock_set_nanoseconds_extension( 
ppc_clock_nanoseconds_since_last_tick);
-
-               if (ppc_cpu_is_bookE()) {
-                       /* Set decrementer auto-reload value */
-                       PPC_SET_SPECIAL_PURPOSE_REGISTER( BOOKE_DECAR, 
ppc_clock_decrementer_value);
-
-                       /* Install exception handler */
-                       ppc_exc_set_handler( ASM_BOOKE_DEC_VECTOR, 
ppc_clock_exception_handler_booke);
-
-                       /* Enable decrementer and auto-reload */
-                       PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS( BOOKE_TCR, 
BOOKE_TCR_DIE | BOOKE_TCR_ARE);
-               } else {
-                       /* Here the decrementer value is actually the interval 
*/
-                       ++ppc_clock_decrementer_value;
-
-                       /* Initialize next time base */
-                       ppc_clock_next_time_base = ppc_time_base() + 
ppc_clock_decrementer_value;
-
-                       /* Install exception handler */
-                       ppc_exc_set_handler( ASM_DEC_VECTOR, 
ppc_clock_exception_handler_first);
-               }
-
-               /* Set the decrementer value */
-               ppc_set_decrementer_register( ppc_clock_decrementer_value);
-       } else {
-               /* PIT interval value */
-               ppc_clock_decrementer_value = interval;
-
-               /* Set the nanoseconds since last tick handler */
-               
rtems_clock_set_nanoseconds_extension(ppc_clock_nanoseconds_since_last_tick_ppc405);
-
-               /* Install exception handler */
-               ppc_exc_set_handler(ASM_BOOKE_DEC_VECTOR, 
ppc_clock_exception_handler_ppc405);
-
-               /* Enable PIT and auto-reload */
-               PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS(PPC405_TCR, BOOKE_TCR_DIE 
| BOOKE_TCR_ARE);
-
-               /* Set PIT auto-reload and initial value */
-               PPC_SET_SPECIAL_PURPOSE_REGISTER(PPC405_PIT, interval);
-       }
-
-       return RTEMS_SUCCESSFUL;
+  uint64_t frequency = bsp_time_base_frequency;
+  uint64_t us_per_tick = rtems_configuration_get_microseconds_per_tick();
+  uint32_t interval = (uint32_t) ((frequency * us_per_tick) / 1000000);
+
+  /*
+   * Set default ticker.
+   *
+   * The function rtems_clock_tick() returns a status code.  This value
+   * will be discarded since the RTEMS documentation claims that it is
+   * always successful.
+   */
+  ppc_clock_tick = (void (*)(void)) rtems_clock_tick;
+
+  /* Factor for nano seconds extension */
+  ppc_clock_factor = (1000000000ULL << 32) / frequency;
+
+  if (ppc_cpu_is_bookE() != PPC_BOOKE_405) {
+    /* Decrementer value */
+    ppc_clock_decrementer_value = interval - 1;
+
+    /* Check decrementer value */
+    if (ppc_clock_decrementer_value == 0) {
+      ppc_clock_decrementer_value = PPC_CLOCK_DECREMENTER_MAX;
+      RTEMS_SYSLOG_ERROR( "decrementer value would be zero, will be set to 
maximum value instead\n");
+    }
+
+    /* Set the nanoseconds since last tick handler */
+    rtems_clock_set_nanoseconds_extension( 
ppc_clock_nanoseconds_since_last_tick);
+
+    if (ppc_cpu_is_bookE()) {
+      /* Set decrementer auto-reload value */
+      PPC_SET_SPECIAL_PURPOSE_REGISTER( BOOKE_DECAR, 
ppc_clock_decrementer_value);
+
+      /* Install exception handler */
+      ppc_exc_set_handler( ASM_BOOKE_DEC_VECTOR, 
ppc_clock_exception_handler_booke);
+
+      /* Enable decrementer and auto-reload */
+      PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS( BOOKE_TCR, BOOKE_TCR_DIE | 
BOOKE_TCR_ARE);
+    } else {
+      /* Here the decrementer value is actually the interval */
+      ++ppc_clock_decrementer_value;
+
+      /* Initialize next time base */
+      ppc_clock_next_time_base = ppc_time_base() + ppc_clock_decrementer_value;
+
+      /* Install exception handler */
+      ppc_exc_set_handler( ASM_DEC_VECTOR, ppc_clock_exception_handler_first);
+    }
+
+    /* Set the decrementer value */
+    ppc_set_decrementer_register( ppc_clock_decrementer_value);
+  } else {
+    /* PIT interval value */
+    ppc_clock_decrementer_value = interval;
+
+    /* Set the nanoseconds since last tick handler */
+    
rtems_clock_set_nanoseconds_extension(ppc_clock_nanoseconds_since_last_tick_ppc405);
+
+    /* Install exception handler */
+    ppc_exc_set_handler(ASM_BOOKE_DEC_VECTOR, 
ppc_clock_exception_handler_ppc405);
+
+    /* Enable PIT and auto-reload */
+    PPC_SET_SPECIAL_PURPOSE_REGISTER_BITS(PPC405_TCR, BOOKE_TCR_DIE | 
BOOKE_TCR_ARE);
+
+    /* Set PIT auto-reload and initial value */
+    PPC_SET_SPECIAL_PURPOSE_REGISTER(PPC405_PIT, interval);
+  }
+
+  return RTEMS_SUCCESSFUL;
 }
-- 
1.9.3

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to