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)