summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-06-22 11:49:38 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-06-22 11:49:38 +0000
commit7deeb1684082843487c36ee1a0bb6adac1bd535b (patch)
tree479b1a11a1e4d0b0d15cca0f1c5fcbbf92b4e028 /c/src
parentAdded mc68681 stuff to the makefile. (diff)
downloadrtems-7deeb1684082843487c36ee1a0bb6adac1bd535b.tar.bz2
Added initial part of iniitialization.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libchip/serial/mc68681.c34
-rw-r--r--c/src/lib/libchip/serial/mc68681.h10
-rw-r--r--c/src/libchip/serial/mc68681.c34
-rw-r--r--c/src/libchip/serial/mc68681.h10
4 files changed, 72 insertions, 16 deletions
diff --git a/c/src/lib/libchip/serial/mc68681.c b/c/src/lib/libchip/serial/mc68681.c
index 1a0c36cbf1..f63e3552ab 100644
--- a/c/src/lib/libchip/serial/mc68681.c
+++ b/c/src/lib/libchip/serial/mc68681.c
@@ -84,6 +84,7 @@ static boolean mc68681_probe(int minor)
static void mc68681_init(int minor)
{
/* XXX */
+ unsigned32 pMC68681_port;
unsigned32 pMC68681;
unsigned8 ucTrash;
unsigned8 ucDataByte;
@@ -102,11 +103,32 @@ ulBaudDivisor = ucDataByte = ucTrash = 0;
pmc68681Context->ucModemCtrl = SP_MODEM_IRQ;
#endif
- pMC68681 = Console_Port_Tbl[minor].ulCtrlPort1;
- setReg = Console_Port_Tbl[minor].setRegister;
- getReg = Console_Port_Tbl[minor].getRegister;
+ pMC68681_port = Console_Port_Tbl[minor].ulCtrlPort1;
+ pMC68681 = Console_Port_Tbl[minor].ulCtrlPort2;
+ setReg = Console_Port_Tbl[minor].setRegister;
+ getReg = Console_Port_Tbl[minor].getRegister;
+
+
+ /*
+ * Reset Receiver
+ */
+
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_RX );
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_RX );
+
+ /*
+ * Reset Transmitter
+ */
+
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_TX );
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_TX );
+
+ (*setReg)( pMC68681, MC68681_MODE_REG_1A, 0x00 );
+ (*setReg)( pMC68681, MC68681_MODE_REG_2A, 0x02 );
+
#if 0
+ /* FOM NS16550 */
/* Clear the divisor latch, clear all interrupt enables,
* and reset and
* disable the FIFO's.
@@ -208,7 +230,7 @@ static void mc68681_write_polled(
* wait for transmitter holding register to be empty
*/
iTimeout = 1000;
- ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS_REG);
+ ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS);
while ((ucLineStatus & MC68681_TX_READY) == 0) {
/*
@@ -218,7 +240,7 @@ static void mc68681_write_polled(
if(_System_state_Is_up(_System_state_Get())) {
rtems_task_wake_after(RTEMS_YIELD_PROCESSOR);
}
- ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS_REG);
+ ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS);
if(!--iTimeout) {
break;
}
@@ -644,7 +666,7 @@ static int mc68681_inbyte_nonblocking_polled(
getReg = Console_Port_Tbl[minor].getRegister;
getData = Console_Port_Tbl[minor].getData;
- ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS_REG);
+ ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS);
if(ucLineStatus & MC68681_RX_READY) {
cChar = (*getData)(pMC68681);
return (int)cChar;
diff --git a/c/src/lib/libchip/serial/mc68681.h b/c/src/lib/libchip/serial/mc68681.h
index b092eadb1b..64b8d9800b 100644
--- a/c/src/lib/libchip/serial/mc68681.h
+++ b/c/src/lib/libchip/serial/mc68681.h
@@ -20,10 +20,16 @@ extern "C" {
/*
* These are just used in the interface between this driver and
- * the read/write register routines.
+ * the read/write register routines when accessing the first
+ * control port.
*/
-#define MC68681_STATUS_REG 0xFF
+#define MC68681_STATUS 1
+#define MC68681_RX_BUFFER 2
+
+#define MC68681_CLOCK_SELECT 1
+#define MC68681_COMMAND 2
+#define MC68681_TX_BUFFER 3
/*
* Driver function table
diff --git a/c/src/libchip/serial/mc68681.c b/c/src/libchip/serial/mc68681.c
index 1a0c36cbf1..f63e3552ab 100644
--- a/c/src/libchip/serial/mc68681.c
+++ b/c/src/libchip/serial/mc68681.c
@@ -84,6 +84,7 @@ static boolean mc68681_probe(int minor)
static void mc68681_init(int minor)
{
/* XXX */
+ unsigned32 pMC68681_port;
unsigned32 pMC68681;
unsigned8 ucTrash;
unsigned8 ucDataByte;
@@ -102,11 +103,32 @@ ulBaudDivisor = ucDataByte = ucTrash = 0;
pmc68681Context->ucModemCtrl = SP_MODEM_IRQ;
#endif
- pMC68681 = Console_Port_Tbl[minor].ulCtrlPort1;
- setReg = Console_Port_Tbl[minor].setRegister;
- getReg = Console_Port_Tbl[minor].getRegister;
+ pMC68681_port = Console_Port_Tbl[minor].ulCtrlPort1;
+ pMC68681 = Console_Port_Tbl[minor].ulCtrlPort2;
+ setReg = Console_Port_Tbl[minor].setRegister;
+ getReg = Console_Port_Tbl[minor].getRegister;
+
+
+ /*
+ * Reset Receiver
+ */
+
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_RX );
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_RX );
+
+ /*
+ * Reset Transmitter
+ */
+
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_TX );
+ (*setReg)( pMC68681, MC68681_COMMAND, MC68681_MODE_REG_RESET_TX );
+
+ (*setReg)( pMC68681, MC68681_MODE_REG_1A, 0x00 );
+ (*setReg)( pMC68681, MC68681_MODE_REG_2A, 0x02 );
+
#if 0
+ /* FOM NS16550 */
/* Clear the divisor latch, clear all interrupt enables,
* and reset and
* disable the FIFO's.
@@ -208,7 +230,7 @@ static void mc68681_write_polled(
* wait for transmitter holding register to be empty
*/
iTimeout = 1000;
- ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS_REG);
+ ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS);
while ((ucLineStatus & MC68681_TX_READY) == 0) {
/*
@@ -218,7 +240,7 @@ static void mc68681_write_polled(
if(_System_state_Is_up(_System_state_Get())) {
rtems_task_wake_after(RTEMS_YIELD_PROCESSOR);
}
- ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS_REG);
+ ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS);
if(!--iTimeout) {
break;
}
@@ -644,7 +666,7 @@ static int mc68681_inbyte_nonblocking_polled(
getReg = Console_Port_Tbl[minor].getRegister;
getData = Console_Port_Tbl[minor].getData;
- ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS_REG);
+ ucLineStatus = (*getReg)(pMC68681, MC68681_STATUS);
if(ucLineStatus & MC68681_RX_READY) {
cChar = (*getData)(pMC68681);
return (int)cChar;
diff --git a/c/src/libchip/serial/mc68681.h b/c/src/libchip/serial/mc68681.h
index b092eadb1b..64b8d9800b 100644
--- a/c/src/libchip/serial/mc68681.h
+++ b/c/src/libchip/serial/mc68681.h
@@ -20,10 +20,16 @@ extern "C" {
/*
* These are just used in the interface between this driver and
- * the read/write register routines.
+ * the read/write register routines when accessing the first
+ * control port.
*/
-#define MC68681_STATUS_REG 0xFF
+#define MC68681_STATUS 1
+#define MC68681_RX_BUFFER 2
+
+#define MC68681_CLOCK_SELECT 1
+#define MC68681_COMMAND 2
+#define MC68681_TX_BUFFER 3
/*
* Driver function table