summaryrefslogtreecommitdiffstats
path: root/c/src/libchip/serial/z85c30.c
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>2011-10-18 18:40:27 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>2011-10-18 18:40:27 +0000
commit229bcca81d09b4271fe3248370b2505310933b12 (patch)
tree336dd61a7a02303f77fee5d52fbd6a02b61271d6 /c/src/libchip/serial/z85c30.c
parent2011-10-18 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff)
downloadrtems-229bcca81d09b4271fe3248370b2505310933b12.tar.bz2
2011-10-18 Jennifer Averett <Jennifer.Averett@OARcorp.com>
PR 1917/bsps * libchip/serial/mc68681.c, libchip/serial/ns16550.c, libchip/serial/serial.h, libchip/serial/z85c30.c: Modifications to add dynamic tables for libchip serial drivers.
Diffstat (limited to '')
-rw-r--r--c/src/libchip/serial/z85c30.c91
1 files changed, 46 insertions, 45 deletions
diff --git a/c/src/libchip/serial/z85c30.c b/c/src/libchip/serial/z85c30.c
index 0213d36ccd..e6adf337a1 100644
--- a/c/src/libchip/serial/z85c30.c
+++ b/c/src/libchip/serial/z85c30.c
@@ -96,8 +96,8 @@ Z85C30_STATIC void z85c30_initialize_port(
uintptr_t ulBaudDivisor;
setRegister_f setReg;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- setReg = Console_Port_Tbl[minor].setRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ setReg = Console_Port_Tbl[minor]->setRegister;
/*
* Using register 4
@@ -137,8 +137,8 @@ Z85C30_STATIC void z85c30_initialize_port(
);
ulBaudDivisor = Z85C30_Baud(
- (uint32_t) Console_Port_Tbl[minor].ulClock,
- (uint32_t) ((uintptr_t)Console_Port_Tbl[minor].pDeviceParams)
+ (uint32_t) Console_Port_Tbl[minor]->ulClock,
+ (uint32_t) ((uintptr_t)Console_Port_Tbl[minor]->pDeviceParams)
);
/*
@@ -219,7 +219,7 @@ Z85C30_STATIC int z85c30_open(
* Assert DTR
*/
- if (Console_Port_Tbl[minor].pDeviceFlow !=&z85c30_flow_DTRCTS) {
+ if (Console_Port_Tbl[minor]->pDeviceFlow !=&z85c30_flow_DTRCTS) {
z85c30_assert_DTR(minor);
}
@@ -240,7 +240,7 @@ Z85C30_STATIC int z85c30_close(
* Negate DTR
*/
- if (Console_Port_Tbl[minor].pDeviceFlow !=&z85c30_flow_DTRCTS) {
+ if (Console_Port_Tbl[minor]->pDeviceFlow !=&z85c30_flow_DTRCTS) {
z85c30_negate_DTR(minor);
}
@@ -258,8 +258,9 @@ Z85C30_STATIC void z85c30_init(int minor)
setRegister_f setReg;
getRegister_f getReg;
- setReg = Console_Port_Tbl[minor].setRegister;
- getReg = Console_Port_Tbl[minor].getRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ setReg = Console_Port_Tbl[minor]->setRegister;
+ getReg = Console_Port_Tbl[minor]->getRegister;
pz85c30Context = (z85c30_context *)malloc(sizeof(z85c30_context));
@@ -267,8 +268,8 @@ Z85C30_STATIC void z85c30_init(int minor)
pz85c30Context->ucModemCtrl = SCC_WR5_TX_8_BITS | SCC_WR5_TX_EN;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- if ( ulCtrlPort == Console_Port_Tbl[minor].ulCtrlPort2 ) {
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ if ( ulCtrlPort == Console_Port_Tbl[minor]->ulCtrlPort2 ) {
/*
* This is channel A
*/
@@ -306,7 +307,7 @@ Z85C30_STATIC int z85c30_assert_RTS(int minor)
z85c30_context *pz85c30Context;
setRegister_f setReg;
- setReg = Console_Port_Tbl[minor].setRegister;
+ setReg = Console_Port_Tbl[minor]->setRegister;
pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;
@@ -317,7 +318,7 @@ Z85C30_STATIC int z85c30_assert_RTS(int minor)
rtems_interrupt_disable(Irql);
pz85c30Context->ucModemCtrl|=SCC_WR5_RTS;
(*setReg)(
- Console_Port_Tbl[minor].ulCtrlPort1,
+ Console_Port_Tbl[minor]->ulCtrlPort1,
SCC_WR0_SEL_WR5,
pz85c30Context->ucModemCtrl
);
@@ -335,7 +336,7 @@ Z85C30_STATIC int z85c30_negate_RTS(int minor)
z85c30_context *pz85c30Context;
setRegister_f setReg;
- setReg = Console_Port_Tbl[minor].setRegister;
+ setReg = Console_Port_Tbl[minor]->setRegister;
pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;
@@ -346,7 +347,7 @@ Z85C30_STATIC int z85c30_negate_RTS(int minor)
rtems_interrupt_disable(Irql);
pz85c30Context->ucModemCtrl&=~SCC_WR5_RTS;
(*setReg)(
- Console_Port_Tbl[minor].ulCtrlPort1,
+ Console_Port_Tbl[minor]->ulCtrlPort1,
SCC_WR0_SEL_WR5,
pz85c30Context->ucModemCtrl
);
@@ -369,7 +370,7 @@ Z85C30_STATIC int z85c30_assert_DTR(int minor)
z85c30_context *pz85c30Context;
setRegister_f setReg;
- setReg = Console_Port_Tbl[minor].setRegister;
+ setReg = Console_Port_Tbl[minor]->setRegister;
pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;
@@ -380,7 +381,7 @@ Z85C30_STATIC int z85c30_assert_DTR(int minor)
rtems_interrupt_disable(Irql);
pz85c30Context->ucModemCtrl|=SCC_WR5_DTR;
(*setReg)(
- Console_Port_Tbl[minor].ulCtrlPort1,
+ Console_Port_Tbl[minor]->ulCtrlPort1,
SCC_WR0_SEL_WR5,
pz85c30Context->ucModemCtrl
);
@@ -398,7 +399,7 @@ Z85C30_STATIC int z85c30_negate_DTR(int minor)
z85c30_context *pz85c30Context;
setRegister_f setReg;
- setReg = Console_Port_Tbl[minor].setRegister;
+ setReg = Console_Port_Tbl[minor]->setRegister;
pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;
@@ -409,7 +410,7 @@ Z85C30_STATIC int z85c30_negate_DTR(int minor)
rtems_interrupt_disable(Irql);
pz85c30Context->ucModemCtrl&=~SCC_WR5_DTR;
(*setReg)(
- Console_Port_Tbl[minor].ulCtrlPort1,
+ Console_Port_Tbl[minor]->ulCtrlPort1,
SCC_WR0_SEL_WR5,
pz85c30Context->ucModemCtrl
);
@@ -438,8 +439,8 @@ Z85C30_STATIC int z85c30_set_attributes(
setRegister_f setReg;
rtems_interrupt_level Irql;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- setReg = Console_Port_Tbl[minor].setRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ setReg = Console_Port_Tbl[minor]->setRegister;
/*
* Calculate the baud rate divisor
@@ -450,7 +451,7 @@ Z85C30_STATIC int z85c30_set_attributes(
baud_requested = B9600; /* default to 9600 baud */
ulBaudDivisor = Z85C30_Baud(
- (uint32_t) Console_Port_Tbl[minor].ulClock,
+ (uint32_t) Console_Port_Tbl[minor]->ulClock,
(uint32_t) rtems_termios_baud_to_number( baud_requested )
);
@@ -540,9 +541,9 @@ Z85C30_STATIC void z85c30_process(
setRegister_f setReg;
getRegister_f getReg;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- setReg = Console_Port_Tbl[minor].setRegister;
- getReg = Console_Port_Tbl[minor].getRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ setReg = Console_Port_Tbl[minor]->setRegister;
+ getReg = Console_Port_Tbl[minor]->getRegister;
/*
* Deal with any received characters
@@ -604,7 +605,7 @@ Z85C30_STATIC void z85c30_process(
rtems_termios_dequeue_characters(Console_Port_Data[minor].termios_data, 1);
if (rtems_termios_dequeue_characters(
Console_Port_Data[minor].termios_data, 1)) {
- if (Console_Port_Tbl[minor].pDeviceFlow != &z85c30_flow_RTSCTS) {
+ if (Console_Port_Tbl[minor]->pDeviceFlow != &z85c30_flow_RTSCTS) {
z85c30_negate_RTS(minor);
}
Console_Port_Data[minor].bActive = FALSE;
@@ -646,10 +647,10 @@ Z85C30_STATIC rtems_isr z85c30_isr(
getRegister_f getReg;
for (minor=0;minor<Console_Port_Count;minor++) {
- if(Console_Port_Tbl[minor].ulIntVector == vector &&
- Console_Port_Tbl[minor].deviceType == SERIAL_Z85C30 ) {
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort2;
- getReg = Console_Port_Tbl[minor].getRegister;
+ if(Console_Port_Tbl[minor]->ulIntVector == vector &&
+ Console_Port_Tbl[minor]->deviceType == SERIAL_Z85C30 ) {
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort2;
+ getReg = Console_Port_Tbl[minor]->getRegister;
do {
ucIntPend = (*getReg)(ulCtrlPort, SCC_WR0_SEL_RD3);
@@ -657,7 +658,7 @@ Z85C30_STATIC rtems_isr z85c30_isr(
* If this is channel A select channel A status
*/
- if (ulCtrlPort == Console_Port_Tbl[minor].ulCtrlPort1) {
+ if (ulCtrlPort == Console_Port_Tbl[minor]->ulCtrlPort1) {
ucIntPendPort = ucIntPend >> 3;
ucIntPendPort &= 7;
} else {
@@ -686,8 +687,8 @@ Z85C30_STATIC void z85c30_enable_interrupts(
uint32_t ulCtrlPort;
setRegister_f setReg;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- setReg = Console_Port_Tbl[minor].setRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ setReg = Console_Port_Tbl[minor]->setRegister;
(*setReg)(ulCtrlPort, SCC_WR0_SEL_WR1, interrupt_mask);
}
@@ -706,9 +707,9 @@ Z85C30_STATIC void z85c30_initialize_interrupts(
uint32_t ulCtrlPort2;
setRegister_f setReg;
- ulCtrlPort1 = Console_Port_Tbl[minor].ulCtrlPort1;
- ulCtrlPort2 = Console_Port_Tbl[minor].ulCtrlPort2;
- setReg = Console_Port_Tbl[minor].setRegister;
+ ulCtrlPort1 = Console_Port_Tbl[minor]->ulCtrlPort1;
+ ulCtrlPort2 = Console_Port_Tbl[minor]->ulCtrlPort2;
+ setReg = Console_Port_Tbl[minor]->setRegister;
z85c30_init(minor);
@@ -717,11 +718,11 @@ Z85C30_STATIC void z85c30_initialize_interrupts(
z85c30_initialize_port( minor );
- if (Console_Port_Tbl[minor].pDeviceFlow != &z85c30_flow_RTSCTS) {
+ if (Console_Port_Tbl[minor]->pDeviceFlow != &z85c30_flow_RTSCTS) {
z85c30_negate_RTS(minor);
}
- set_vector(z85c30_isr, Console_Port_Tbl[minor].ulIntVector, 1);
+ set_vector(z85c30_isr, Console_Port_Tbl[minor]->ulIntVector, 1);
z85c30_enable_interrupts(minor, SCC_ENABLE_ALL_INTR_EXCEPT_TX);
@@ -751,8 +752,8 @@ Z85C30_STATIC ssize_t z85c30_write_support_int(
uint32_t ulCtrlPort;
setRegister_f setReg;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- setReg = Console_Port_Tbl[minor].setRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ setReg = Console_Port_Tbl[minor]->setRegister;
/*
* We are using interrupt driven output and termios only sends us
@@ -766,7 +767,7 @@ Z85C30_STATIC ssize_t z85c30_write_support_int(
* Put the character out and enable interrupts if necessary.
*/
- if (Console_Port_Tbl[minor].pDeviceFlow != &z85c30_flow_RTSCTS) {
+ if (Console_Port_Tbl[minor]->pDeviceFlow != &z85c30_flow_RTSCTS) {
z85c30_assert_RTS(minor);
}
rtems_interrupt_disable(Irql);
@@ -794,8 +795,8 @@ Z85C30_STATIC int z85c30_inbyte_nonblocking_polled(
uint32_t ulCtrlPort;
getRegister_f getReg;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- getReg = Console_Port_Tbl[minor].getRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ getReg = Console_Port_Tbl[minor]->getRegister;
/*
* return -1 if a character is not available.
@@ -856,9 +857,9 @@ Z85C30_STATIC void z85c30_write_polled(
getRegister_f getReg;
setRegister_f setReg;
- ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;
- getReg = Console_Port_Tbl[minor].getRegister;
- setReg = Console_Port_Tbl[minor].setRegister;
+ ulCtrlPort = Console_Port_Tbl[minor]->ulCtrlPort1;
+ getReg = Console_Port_Tbl[minor]->getRegister;
+ setReg = Console_Port_Tbl[minor]->setRegister;
/*
* Wait for the Transmit buffer to indicate that it is empty.