forked from Imagelibrary/rtems
shared/include/utility.h: Removed file.
shared/include/powerpc-utility.h: Use constraint "b" for address base registers in inline assembler statements. Update for status-checks.h changes.
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
2008-09-23 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* shared/include/utility.h: Removed file.
|
||||
|
||||
2008-09-22 Ralf Corsépius <ralf.corsepius@rtems.org>
|
||||
|
||||
* Makefile.am: Don't install files from shared/.
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
2008-10-02 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* shared/include/powerpc-utility.h: Use constraint "b" for address
|
||||
base registers in inline assembler statements.
|
||||
|
||||
* mpc55xx/dspi/dspi.c, mpc55xx/edma/edma.c, mpc55xx/esci/esci.c,
|
||||
mpc55xx/irq/irq.c, mpc83xx/gtm/gtm.c: Update for status-checks.h
|
||||
changes.
|
||||
|
||||
2008-10-01 Ralf Corsépius <ralf.corsepius@rtems.org>
|
||||
|
||||
* mpc83xx/include/mpc83xx.h: #include <bspopts.h> to make sure
|
||||
|
||||
@@ -162,10 +162,10 @@ static rtems_status_code mpc55xx_dspi_init( rtems_libi2c_bus_t *bus)
|
||||
RTEMS_NO_PRIORITY,
|
||||
&e->edma_channel_receive_update
|
||||
);
|
||||
CHECK_SC( sc, "Create receive update semaphore");
|
||||
RTEMS_CHECK_SC( sc, "Create receive update semaphore");
|
||||
|
||||
sc = mpc55xx_edma_obtain_channel( e->edma_channel_receive, &e->edma_channel_receive_error, e->edma_channel_receive_update);
|
||||
CHECK_SC( sc, "Obtain receive eDMA channel");
|
||||
RTEMS_CHECK_SC( sc, "Obtain receive eDMA channel");
|
||||
|
||||
/* eDMA transmit */
|
||||
sc = rtems_semaphore_create (
|
||||
@@ -175,13 +175,13 @@ static rtems_status_code mpc55xx_dspi_init( rtems_libi2c_bus_t *bus)
|
||||
RTEMS_NO_PRIORITY,
|
||||
&e->edma_channel_transmit_update
|
||||
);
|
||||
CHECK_SC( sc, "Create transmit update semaphore");
|
||||
RTEMS_CHECK_SC( sc, "Create transmit update semaphore");
|
||||
|
||||
sc = mpc55xx_edma_obtain_channel( e->edma_channel_transmit, &e->edma_channel_transmit_error, e->edma_channel_transmit_update);
|
||||
CHECK_SC( sc, "Obtain transmit eDMA channel");
|
||||
RTEMS_CHECK_SC( sc, "Obtain transmit eDMA channel");
|
||||
|
||||
sc = mpc55xx_edma_obtain_channel( e->edma_channel_push, NULL, RTEMS_ID_NONE);
|
||||
CHECK_SC( sc, "Obtain push eDMA channel");
|
||||
RTEMS_CHECK_SC( sc, "Obtain push eDMA channel");
|
||||
|
||||
tcd_push.SADDR = mpc55xx_dspi_push_data_address( e);
|
||||
tcd_push.SSIZE = 2;
|
||||
@@ -424,11 +424,11 @@ static int mpc55xx_dspi_read_write( rtems_libi2c_bus_t *bus, unsigned char *in,
|
||||
n_nc = (int) mpc55xx_non_cache_aligned_size( in);
|
||||
n_c = (int) mpc55xx_cache_aligned_size( in, (size_t) n);
|
||||
if (n_c > EDMA_TCD_BITER_LINKED_SIZE) {
|
||||
SYSLOG_WARNING( "Buffer size out of range, cannot use eDMA\n");
|
||||
RTEMS_SYSLOG_WARNING( "Buffer size out of range, cannot use eDMA\n");
|
||||
n_nc = n;
|
||||
n_c = 0;
|
||||
} else if (n_nc + n_c != n) {
|
||||
SYSLOG_WARNING( "Input buffer not proper cache aligned, cannot use eDMA\n");
|
||||
RTEMS_SYSLOG_WARNING( "Input buffer not proper cache aligned, cannot use eDMA\n");
|
||||
n_nc = n;
|
||||
n_c = 0;
|
||||
}
|
||||
@@ -436,7 +436,7 @@ static int mpc55xx_dspi_read_write( rtems_libi2c_bus_t *bus, unsigned char *in,
|
||||
|
||||
#ifdef DEBUG
|
||||
if (e->regs->SR.B.TXCTR != e->regs->SR.B.RXCTR) {
|
||||
SYSLOG_WARNING( "FIFO counter not equal\n");
|
||||
RTEMS_SYSLOG_WARNING( "FIFO counter not equal\n");
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
|
||||
@@ -577,24 +577,24 @@ static int mpc55xx_dspi_read_write( rtems_libi2c_bus_t *bus, unsigned char *in,
|
||||
|
||||
/* Enable hardware requests */
|
||||
sc = mpc55xx_edma_enable_hardware_requests( e->edma_channel_receive, true);
|
||||
CHECK_SCRV( sc, "Enable receive hardware requests");
|
||||
RTEMS_CHECK_SC_RV( sc, "Enable receive hardware requests");
|
||||
sc = mpc55xx_edma_enable_hardware_requests( e->edma_channel_transmit, true);
|
||||
CHECK_SCRV( sc, "Enable transmit hardware requests");
|
||||
RTEMS_CHECK_SC_RV( sc, "Enable transmit hardware requests");
|
||||
|
||||
/* Wait for transmit update */
|
||||
sc = rtems_semaphore_obtain( e->edma_channel_transmit_update, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
|
||||
CHECK_SCRV( sc, "Transmit update");
|
||||
RTEMS_CHECK_SC_RV( sc, "Transmit update");
|
||||
if (e->edma_channel_transmit_error != 0) {
|
||||
SYSLOG_ERROR( "Transmit error status: 0x%08x\n", e->edma_channel_transmit_error);
|
||||
RTEMS_SYSLOG_ERROR( "Transmit error status: 0x%08x\n", e->edma_channel_transmit_error);
|
||||
e->edma_channel_transmit_error = 0;
|
||||
return -RTEMS_IO_ERROR;
|
||||
}
|
||||
|
||||
/* Wait for receive update */
|
||||
sc = rtems_semaphore_obtain( e->edma_channel_receive_update, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
|
||||
CHECK_SCRV( sc, "Receive update");
|
||||
RTEMS_CHECK_SC_RV( sc, "Receive update");
|
||||
if (e->edma_channel_receive_error != 0) {
|
||||
SYSLOG_ERROR( "Receive error status: 0x%08x\n", e->edma_channel_receive_error);
|
||||
RTEMS_SYSLOG_ERROR( "Receive error status: 0x%08x\n", e->edma_channel_receive_error);
|
||||
e->edma_channel_receive_error = 0;
|
||||
return -RTEMS_IO_ERROR;
|
||||
}
|
||||
|
||||
@@ -60,11 +60,11 @@ static void mpc55xx_edma_irq_handler( rtems_vector_number vector, void *data)
|
||||
mpc55xx_edma_channel_entry *e = (mpc55xx_edma_channel_entry *) data;
|
||||
#ifdef DEBUG
|
||||
uint32_t citer = EDMA.TCD [e->channel].CITERE_LINK ? EDMA.TCD [e->channel].CITER & EDMA_TCD_BITER_LINKED_MASK : EDMA.TCD [e->channel].CITER;
|
||||
DEBUG_PRINT( "Channel %i (CITER = %i)\n", e->channel, citer);
|
||||
RTEMS_DEBUG_PRINT( "Channel %i (CITER = %i)\n", e->channel, citer);
|
||||
#endif /* DEBUG */
|
||||
EDMA.CIRQR.R = e->channel;
|
||||
sc = rtems_semaphore_release( e->transfer_update);
|
||||
SYSLOG_WARNING_SC( sc, "Transfer update semaphore release");
|
||||
RTEMS_SYSLOG_WARNING_SC( sc, "Transfer update semaphore release");
|
||||
}
|
||||
|
||||
static void mpc55xx_edma_irq_update_error_table( uint8_t *link_table, uint8_t *error_table, int channel)
|
||||
@@ -95,7 +95,7 @@ static void mpc55xx_edma_irq_error_handler( rtems_vector_number vector, void *da
|
||||
} else if (channel_start < 64) {
|
||||
error_register = EDMA.ERH.R;
|
||||
}
|
||||
DEBUG_PRINT( "Error register %s: 0x%08x\n", channel_start < 32 ? "low" : "high", error_register);
|
||||
RTEMS_DEBUG_PRINT( "Error register %s: 0x%08x\n", channel_start < 32 ? "low" : "high", error_register);
|
||||
|
||||
/* Fill channel link table */
|
||||
for (i = 0; i < MPC55XX_EDMA_CHANNEL_NUMBER; ++i) {
|
||||
@@ -126,9 +126,9 @@ static void mpc55xx_edma_irq_error_handler( rtems_vector_number vector, void *da
|
||||
*e->error_status = error_register;
|
||||
}
|
||||
sc = mpc55xx_edma_enable_hardware_requests( i, false);
|
||||
SYSLOG_ERROR_SC( sc, "Disable hardware requests, channel = %i", i);
|
||||
RTEMS_SYSLOG_ERROR_SC( sc, "Disable hardware requests");
|
||||
sc = rtems_semaphore_release( e->transfer_update);
|
||||
SYSLOG_WARNING_SC( sc, "Transfer update semaphore release, channel = %i", i);
|
||||
RTEMS_SYSLOG_WARNING_SC( sc, "Transfer update semaphore release");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ rtems_status_code mpc55xx_edma_init()
|
||||
RTEMS_NO_PRIORITY,
|
||||
&mpc55xx_edma_channel_occupation_mutex
|
||||
);
|
||||
CHECK_SC( sc, "Create channel occupation mutex");
|
||||
RTEMS_CHECK_SC( sc, "Create channel occupation mutex");
|
||||
|
||||
/* Arbitration mode: round robin */
|
||||
EDMA.CR.B.ERCA = 1;
|
||||
@@ -204,7 +204,7 @@ rtems_status_code mpc55xx_edma_init()
|
||||
mpc55xx_edma_irq_error_handler,
|
||||
&mpc55xx_edma_irq_error_low_channel
|
||||
);
|
||||
CHECK_SC( sc, "Install low error interrupt handler");
|
||||
RTEMS_CHECK_SC( sc, "Install low error interrupt handler");
|
||||
sc = mpc55xx_interrupt_handler_install(
|
||||
MPC55XX_IRQ_EDMA_ERROR_HIGH,
|
||||
MPC55XX_EDMA_IRQ_PRIORITY,
|
||||
@@ -213,7 +213,7 @@ rtems_status_code mpc55xx_edma_init()
|
||||
mpc55xx_edma_irq_error_handler,
|
||||
&mpc55xx_edma_irq_error_high_channel
|
||||
);
|
||||
CHECK_SC( sc, "Install high error interrupt handler");
|
||||
RTEMS_CHECK_SC( sc, "Install high error interrupt handler");
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
@@ -229,7 +229,7 @@ rtems_status_code mpc55xx_edma_obtain_channel( int channel, uint32_t *error_stat
|
||||
|
||||
/* Check occupation */
|
||||
sc = rtems_semaphore_obtain( mpc55xx_edma_channel_occupation_mutex, RTEMS_WAIT, 0);
|
||||
CHECK_SC( sc, "Obtain channel occupation mutex");
|
||||
RTEMS_CHECK_SC( sc, "Obtain channel occupation mutex");
|
||||
if (channel < 32) {
|
||||
channel_occupied = mpc55xx_edma_channel_occupation_low & (0x1 << channel);
|
||||
if (!channel_occupied) {
|
||||
@@ -243,11 +243,11 @@ rtems_status_code mpc55xx_edma_obtain_channel( int channel, uint32_t *error_stat
|
||||
}
|
||||
if (channel_occupied) {
|
||||
sc = rtems_semaphore_release( mpc55xx_edma_channel_occupation_mutex);
|
||||
SYSLOG_WARNING_SC( sc, "Release occupation mutex");
|
||||
RTEMS_SYSLOG_WARNING_SC( sc, "Release occupation mutex");
|
||||
return RTEMS_RESOURCE_IN_USE;
|
||||
} else {
|
||||
sc = rtems_semaphore_release( mpc55xx_edma_channel_occupation_mutex);
|
||||
CHECK_SC( sc, "Release channel occupation mutex");
|
||||
RTEMS_CHECK_SC( sc, "Release channel occupation mutex");
|
||||
}
|
||||
|
||||
/* Channel data */
|
||||
@@ -263,11 +263,11 @@ rtems_status_code mpc55xx_edma_obtain_channel( int channel, uint32_t *error_stat
|
||||
mpc55xx_edma_irq_handler,
|
||||
&mpc55xx_edma_channel_table [channel]
|
||||
);
|
||||
CHECK_SC( sc, "Install channel interrupt handler");
|
||||
RTEMS_CHECK_SC( sc, "Install channel interrupt handler");
|
||||
|
||||
/* Enable error interrupts */
|
||||
sc = mpc55xx_edma_enable_error_interrupts( channel, true);
|
||||
CHECK_SC( sc, "Enable error interrupts");
|
||||
RTEMS_CHECK_SC( sc, "Enable error interrupts");
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
@@ -458,17 +458,17 @@ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_d
|
||||
for (i = 0; i < MPC55XX_ESCI_NUMBER; ++i) {
|
||||
e = &mpc55xx_esci_driver_table [i];
|
||||
sc = rtems_io_register_name ( e->device_name, major, i);
|
||||
CHECK_SC( sc, "Register IO device");
|
||||
RTEMS_CHECK_SC( sc, "Register IO device");
|
||||
if (e->console) {
|
||||
if (console_done) {
|
||||
SYSLOG_WARNING( "Multiple console ports defined\n");
|
||||
RTEMS_SYSLOG_WARNING( "Multiple console ports defined\n");
|
||||
} else {
|
||||
console_done = 1;
|
||||
if (e->use_interrupts) {
|
||||
SYSLOG_WARNING( "Cannot use interrupts for console port\n");
|
||||
RTEMS_SYSLOG_WARNING( "Cannot use interrupts for console port\n");
|
||||
}
|
||||
sc = rtems_io_register_name( CONSOLE_DEVICE_NAME, major, i);
|
||||
CHECK_SC( sc, "Register IO device");
|
||||
RTEMS_CHECK_SC( sc, "Register IO device");
|
||||
}
|
||||
}
|
||||
if (e->use_termios && termios_do_init) {
|
||||
@@ -485,7 +485,7 @@ rtems_device_driver console_initialize( rtems_device_major_number major, rtems_d
|
||||
mpc55xx_esci_termios_interrupt_handler,
|
||||
e
|
||||
);
|
||||
CHECK_SC( sc, "Install IRQ handler");
|
||||
RTEMS_CHECK_SC( sc, "Install IRQ handler");
|
||||
}
|
||||
}
|
||||
mpc55xx_esci_termios_set_attributes( (int) i, &mpc55xx_esci_termios_default);
|
||||
|
||||
@@ -103,7 +103,7 @@ rtems_status_code mpc55xx_interrupt_handler_install(
|
||||
|
||||
if (MPC55XX_IRQ_IS_VALID( vector) && MPC55XX_INTC_IS_VALID_PRIORITY( priority)) {
|
||||
sc = rtems_interrupt_handler_install( vector, info, options, handler, arg);
|
||||
CHECK_SC( sc, "Install interrupt handler");
|
||||
RTEMS_CHECK_SC( sc, "Install interrupt handler");
|
||||
return mpc55xx_intc_set_priority( vector, priority);
|
||||
} else {
|
||||
return RTEMS_INVALID_NUMBER;
|
||||
|
||||
@@ -65,16 +65,16 @@ rtems_status_code mpc83xx_gtm_initialize( int timer, int clock)
|
||||
rtems_interrupt_enable( level);
|
||||
|
||||
sc = mpc83xx_gtm_set_clock( timer, clock);
|
||||
CHECK_SC( sc, "Set clock");
|
||||
RTEMS_CHECK_SC( sc, "Set clock");
|
||||
|
||||
sc = mpc83xx_gtm_set_value( timer, 0);
|
||||
CHECK_SC( sc, "Set value");
|
||||
RTEMS_CHECK_SC( sc, "Set value");
|
||||
|
||||
sc = mpc83xx_gtm_set_reference( timer, 0);
|
||||
CHECK_SC( sc, "Set reference");
|
||||
RTEMS_CHECK_SC( sc, "Set reference");
|
||||
|
||||
sc = mpc83xx_gtm_set_prescale( timer, 0);
|
||||
CHECK_SC( sc, "Set prescale");
|
||||
RTEMS_CHECK_SC( sc, "Set prescale");
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ static inline uint8_t ppc_read_byte( const volatile void *src)
|
||||
asm volatile (
|
||||
"lbz %0, 0(%1)"
|
||||
: "=r" (value)
|
||||
: "r" (src)
|
||||
: "b" (src)
|
||||
);
|
||||
|
||||
return value;
|
||||
@@ -69,7 +69,7 @@ static inline uint16_t ppc_read_half_word( const volatile void *src)
|
||||
asm volatile (
|
||||
"lhz %0, 0(%1)"
|
||||
: "=r" (value)
|
||||
: "r" (src)
|
||||
: "b" (src)
|
||||
);
|
||||
|
||||
return value;
|
||||
@@ -85,7 +85,7 @@ static inline uint32_t ppc_read_word( const volatile void *src)
|
||||
asm volatile (
|
||||
"lwz %0, 0(%1)"
|
||||
: "=r" (value)
|
||||
: "r" (src)
|
||||
: "b" (src)
|
||||
);
|
||||
|
||||
return value;
|
||||
@@ -99,7 +99,7 @@ static inline void ppc_write_byte( uint8_t value, volatile void *dest)
|
||||
asm volatile (
|
||||
"stb %0, 0(%1)"
|
||||
:
|
||||
: "r" (value), "r" (dest)
|
||||
: "r" (value), "b" (dest)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ static inline void ppc_write_half_word( uint16_t value, volatile void *dest)
|
||||
asm volatile (
|
||||
"sth %0, 0(%1)"
|
||||
:
|
||||
: "r" (value), "r" (dest)
|
||||
: "r" (value), "b" (dest)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ static inline void ppc_write_word( uint32_t value, volatile void *dest)
|
||||
{
|
||||
asm volatile (
|
||||
"stw %0, 0(%1)" :
|
||||
: "r" (value), "r" (dest)
|
||||
: "r" (value), "b" (dest)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user