2006-04-05 Victor V. Vengerov <Victor.Vengerov@oktetlabs.ru>

* mpc6xx/clock/c_clock.c: Now works with MPCI SHM driver.
This commit is contained in:
Joel Sherrill
2006-04-05 20:11:57 +00:00
parent 0c30bc58c1
commit 5675896592
2 changed files with 17 additions and 4 deletions

View File

@@ -1,3 +1,7 @@
2006-04-05 Victor V. Vengerov <Victor.Vengerov@oktetlabs.ru>
* mpc6xx/clock/c_clock.c: Now works with MPCI SHM driver.
2006-01-20 Till Straumann <strauman@slac.stanford.edu> 2006-01-20 Till Straumann <strauman@slac.stanford.edu>
* mpc6xx/mmu/pte121.c: consistency check now warns instead * mpc6xx/mmu/pte121.c: consistency check now warns instead

View File

@@ -60,6 +60,13 @@ void clockOn(void* unused)
PPC_Set_decrementer( Clock_Decrementer_value ); PPC_Set_decrementer( Clock_Decrementer_value );
} }
static void clockHandler(void)
{
rtems_clock_tick();
}
static void (*clock_handler)(void);
/* /*
* Clock_isr * Clock_isr
* *
@@ -73,7 +80,6 @@ void clockOn(void* unused)
* Return values: NONE * Return values: NONE
* *
*/ */
void clockIsr(void *unused) void clockIsr(void *unused)
{ {
int decr; int decr;
@@ -91,7 +97,7 @@ int decr;
/* /*
* Real Time Clock counter/timer is set to automatically reload. * Real Time Clock counter/timer is set to automatically reload.
*/ */
rtems_clock_tick(); clock_handler();
} while ( decr < 0 ); } while ( decr < 0 );
} }
@@ -161,6 +167,7 @@ rtems_device_driver Clock_initialize(
* the correct value. * the correct value.
*/ */
clock_handler = clockHandler;
if (!BSP_connect_clock_handler ()) { if (!BSP_connect_clock_handler ()) {
printk("Unable to initialize system clock\n"); printk("Unable to initialize system clock\n");
rtems_fatal_error_occurred(1); rtems_fatal_error_occurred(1);
@@ -204,10 +211,12 @@ rtems_device_driver Clock_control(
(rtems_configuration_get_microseconds_per_tick()/1000); (rtems_configuration_get_microseconds_per_tick()/1000);
if (args->command == rtems_build_name('I', 'S', 'R', ' ')) if (args->command == rtems_build_name('I', 'S', 'R', ' '))
clockIsr(NULL); clockHandler();
else if (args->command == rtems_build_name('N', 'E', 'W', ' ')) else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
{ {
Clock_initialize(major, minor, 0); if (clock_handler == NULL)
Clock_initialize(major, minor, 0);
clock_handler = args->buffer;
} }
done: done:
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;