Changes in kernel/genarch/src/drivers/ns16550/ns16550.c [28a5ebd:98a935e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/drivers/ns16550/ns16550.c
r28a5ebd r98a935e 132 132 }; 133 133 134 /** Configure ns16550 transmission format. 135 * 136 * @param instance NS 16550 driver instance. 137 * @param baud_rate Transmission speed in bits per second, also known as baud, 138 * maximum value is 115200. 139 * @param lcr_format Line Control Register configuration bits, as defined by 140 * the @c LCR_ macros. These configure the word width, 141 * parity type, and stop bit count. 142 */ 143 void ns16550_format_set(ns16550_instance_t *instance, 144 unsigned baud_rate, uint8_t lcr_format) 145 { 146 uint16_t divisor; 147 148 divisor = (uint16_t)(NS156440_CLOCK / baud_rate); 149 if (divisor == 0) 150 divisor = 1; /* Avoid division by zero. */ 151 152 ns16550_reg_write(instance, NS16550_REG_LCR, LCR_DLAB); 153 ns16550_reg_write(instance, NS16550_REG_DLL, divisor & 0xFF); 154 ns16550_reg_write(instance, NS16550_REG_DLH, (divisor >> 8) & 0xFF); 155 ns16550_reg_write(instance, NS16550_REG_LCR, lcr_format & ~LCR_DLAB); 156 } 157 134 158 /** Initialize ns16550. 135 159 *
Note:
See TracChangeset
for help on using the changeset viewer.