diff options
Diffstat (limited to 'c/src/lib/libcpu/sh/sh7032/sci/sci.c')
-rw-r--r-- | c/src/lib/libcpu/sh/sh7032/sci/sci.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/c/src/lib/libcpu/sh/sh7032/sci/sci.c b/c/src/lib/libcpu/sh/sh7032/sci/sci.c index bd23038941..d5de4f4f43 100644 --- a/c/src/lib/libcpu/sh/sh7032/sci/sci.c +++ b/c/src/lib/libcpu/sh/sh7032/sci/sci.c @@ -8,7 +8,7 @@ * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * + * * * COPYRIGHT (c) 1998. * On-Line Applications Research Corporation (OAR). @@ -36,9 +36,9 @@ /* * NOTE: Some SH variants have 3 sci devices */ - + #define SCI_MINOR_DEVICES 2 - + #define SH_SCI_BASE_0 SCI0_SMR #define SH_SCI_BASE_1 SCI1_SMR @@ -67,13 +67,13 @@ static int _sci_set_cflags( { uint8_t smr ; uint8_t brr ; - + if ( c_cflag & CBAUD ) { if ( _sci_get_brparms( c_cflag, &smr, &brr ) != 0 ) return -1 ; } - + if ( c_cflag & CSIZE ) { if ( c_cflag & CS8 ) @@ -98,26 +98,26 @@ static int _sci_set_cflags( smr |= SCI_ODD_PARITY ; else smr &= ~SCI_ODD_PARITY; - + write8( smr, sci_dev->addr + SCI_SMR ); write8( brr, sci_dev->addr + SCI_BRR ); - + return 0 ; } -static void _sci_init( +static void _sci_init( rtems_device_minor_number minor ) { uint16_t temp16 ; - /* Pin function controller initialisation for asynchronous mode */ + /* Pin function controller initialisation for asynchronous mode */ if( minor == 0) { temp16 = read16( PFC_PBCR1); temp16 &= ~( PB8MD | PB9MD ); temp16 |= (PB_TXD0 | PB_RXD0); write16( temp16, PFC_PBCR1); - } + } else { temp16 = read16( PFC_PBCR1); @@ -147,7 +147,7 @@ static void _sci_tx_polled( { struct scidev_t *scidev = &sci_device[minor] ; int8_t ssr ; - + while ( !inb((scidev->addr + SCI_SSR) & SCI_TDRE )) ; write8(buf,scidev->addr+SCI_TDR); @@ -155,13 +155,13 @@ static void _sci_tx_polled( ssr = inb(scidev->addr+SCI_SSR); ssr &= ~SCI_TDRE ; write8(ssr,scidev->addr+SCI_SSR); -} +} static int _sci_rx_polled ( int minor) { struct scidev_t *scidev = &sci_device[minor] ; - + unsigned char c; char ssr ; ssr = read8(scidev->addr + SCI_SSR) ; @@ -171,9 +171,9 @@ static int _sci_rx_polled ( if ( !(ssr & SCI_RDRF) ) return -1; - + c = read8(scidev->addr + SCI_RDR) ; - + write8(ssr & ~SCI_RDRF,scidev->addr + SCI_SSR); return c; } @@ -189,7 +189,7 @@ rtems_device_driver sh_sci_initialize( { rtems_device_driver status ; rtems_device_minor_number i; - + /* * register all possible devices. * the initialization of the hardware is done by sci_open @@ -206,7 +206,7 @@ rtems_device_driver sh_sci_initialize( } /* default hardware setup */ - + return RTEMS_SUCCESSFUL; } @@ -221,20 +221,20 @@ rtems_device_driver sh_sci_open( void * arg ) { uint8_t temp8; - + /* check for valid minor number */ if(( minor > ( SCI_MINOR_DEVICES -1 )) || ( minor < 0 )) { return RTEMS_INVALID_NUMBER; } - + /* device already opened */ if ( sci_device[minor].opened > 0 ) { sci_device[minor].opened++ ; return RTEMS_SUCCESSFUL ; } - + _sci_init( minor ); if (minor == 0) { @@ -256,16 +256,16 @@ rtems_device_driver sh_sci_open( /* FIXME: Should be one bit delay */ CPU_delay(50000); /* microseconds */ - + temp8 |= SCI_RE | SCI_TE; write8(temp8, sci_device[minor].addr + SCI_SCR); /* Enable clock output */ - } + } sci_device[minor].opened++ ; return RTEMS_SUCCESSFUL ; } - + /* * Close entry point */ @@ -282,7 +282,7 @@ rtems_device_driver sh_sci_close( } sci_device[minor].opened-- ; - + return RTEMS_SUCCESSFUL ; } @@ -297,7 +297,7 @@ rtems_device_driver sh_sci_read( ) { int count = 0; - + rtems_libio_rw_args_t *rw_args = (rtems_libio_rw_args_t *) arg; char * buffer = rw_args->buffer; int maximum = rw_args->count; |