Mercurial > ecos-v3_0-branch
comparison packages/devs/serial/sh/edk7708/current/src/sh_sci_serial.c @ 115:6ed91473a1cd ecos-sw-2000-08-21
Merge from eCos master repository on 2000-08-21-22:40:54-BST
| author | jlarmour |
|---|---|
| date | Fri, 25 Aug 2000 17:32:38 +0000 |
| parents | 6736c52df507 |
| children |
comparison
equal
deleted
inserted
replaced
| 114:5ad2b71d525e | 115:6ed91473a1cd |
|---|---|
| 138 static bool sh_serial_putc(serial_channel *chan, unsigned char c); | 138 static bool sh_serial_putc(serial_channel *chan, unsigned char c); |
| 139 static Cyg_ErrNo sh_serial_lookup(struct cyg_devtab_entry **tab, | 139 static Cyg_ErrNo sh_serial_lookup(struct cyg_devtab_entry **tab, |
| 140 struct cyg_devtab_entry *sub_tab, | 140 struct cyg_devtab_entry *sub_tab, |
| 141 const char *name); | 141 const char *name); |
| 142 static unsigned char sh_serial_getc(serial_channel *chan); | 142 static unsigned char sh_serial_getc(serial_channel *chan); |
| 143 static bool sh_serial_set_config(serial_channel *chan, cyg_serial_info_t *config); | 143 static Cyg_ErrNo sh_serial_set_config(serial_channel *chan, cyg_uint32 key, |
| 144 const void *xbuf, cyg_uint32 *len); | |
| 144 static void sh_serial_start_xmit(serial_channel *chan); | 145 static void sh_serial_start_xmit(serial_channel *chan); |
| 145 static void sh_serial_stop_xmit(serial_channel *chan); | 146 static void sh_serial_stop_xmit(serial_channel *chan); |
| 146 | 147 |
| 147 static cyg_uint32 sh_serial_tx_ISR(cyg_vector_t vector, cyg_addrword_t data); | 148 static cyg_uint32 sh_serial_tx_ISR(cyg_vector_t vector, cyg_addrword_t data); |
| 148 static void sh_serial_tx_DSR(cyg_vector_t vector, cyg_ucount32 count, | 149 static void sh_serial_tx_DSR(cyg_vector_t vector, cyg_ucount32 count, |
| 327 | 328 |
| 328 return c; | 329 return c; |
| 329 } | 330 } |
| 330 | 331 |
| 331 // Set up the device characteristics; baud rate, etc. | 332 // Set up the device characteristics; baud rate, etc. |
| 332 static bool | 333 static Cyg_ErrNo |
| 333 sh_serial_set_config(serial_channel *chan, cyg_serial_info_t *config) | 334 sh_serial_set_config(serial_channel *chan, cyg_uint32 key, |
| 334 { | 335 const void *xbuf, cyg_uint32 *len) |
| 335 return sh_serial_config_port(chan, config, false); | 336 { |
| 337 switch (key) { | |
| 338 case CYG_IO_SET_CONFIG_SERIAL_INFO: | |
| 339 { | |
| 340 cyg_serial_info_t *config = (cyg_serial_info_t *)xbuf; | |
| 341 if ( *len < sizeof(cyg_serial_info_t) ) { | |
| 342 return -EINVAL; | |
| 343 } | |
| 344 *len = sizeof(cyg_serial_info_t); | |
| 345 if ( true != sh_serial_config_port(chan, config, false) ) | |
| 346 return -EINVAL; | |
| 347 } | |
| 348 break; | |
| 349 default: | |
| 350 return -EINVAL; | |
| 351 } | |
| 352 return ENOERR; | |
| 336 } | 353 } |
| 337 | 354 |
| 338 // Enable the transmitter on the device | 355 // Enable the transmitter on the device |
| 339 static void | 356 static void |
| 340 sh_serial_start_xmit(serial_channel *chan) | 357 sh_serial_start_xmit(serial_channel *chan) |
