Changes in kernel/genarch/src/drivers/ns16550/ns16550.c [82dcd25:aafed15] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/drivers/ns16550/ns16550.c
r82dcd25 raafed15 39 39 #include <genarch/drivers/ns16550/ns16550.h> 40 40 #include <ddi/irq.h> 41 #include <ddi/ddi.h>42 41 #include <arch/asm.h> 43 42 #include <console/chardev.h> 44 43 #include <stdlib.h> 45 #include <align.h>46 44 #include <str.h> 47 45 … … 145 143 * 146 144 */ 147 ns16550_instance_t *ns16550_init(ioport8_t *dev_phys, unsigned reg_shift, 148 inr_t inr, cir_t cir, void *cir_arg, outdev_t **output) 149 { 150 size_t size = 6 * (1U << reg_shift); 151 ioport8_t *dev = pio_map((void *) dev_phys, size); 152 153 ns16550_instance_t *instance = malloc(sizeof(ns16550_instance_t)); 145 ns16550_instance_t *ns16550_init(ioport8_t *dev, unsigned reg_shift, inr_t inr, 146 cir_t cir, void *cir_arg, outdev_t **output) 147 { 148 ns16550_instance_t *instance = 149 malloc(sizeof(ns16550_instance_t)); 154 150 if (instance) { 155 151 instance->ns16550 = dev; … … 162 158 if (!instance->output) { 163 159 free(instance); 164 pio_unmap((void *) dev_phys, (void *) dev,165 size);166 160 return NULL; 167 161 } … … 182 176 183 177 ddi_parea_init(&instance->parea); 184 instance->parea.pbase = ALIGN_DOWN((uintptr_t) dev_phys, 185 PAGE_SIZE); 186 instance->parea.frames = ALIGN_UP(size, PAGE_SIZE); 178 instance->parea.pbase = (uintptr_t) dev; 179 instance->parea.frames = 1; 187 180 instance->parea.unpriv = false; 188 181 instance->parea.mapped = false;
Note:
See TracChangeset
for help on using the changeset viewer.