X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/6f6da1abb22dff69dbb710bd2fd9d95f083f2b43..d1b1c8d9119229dbeed06cd252917e54a1cb77f6:/lunaix-os/hal/char/uart/16550_pmio.c?ds=sidebyside diff --git a/lunaix-os/hal/char/uart/16550_pmio.c b/lunaix-os/hal/char/uart/16550_pmio.c index ed3a618..62d403a 100644 --- a/lunaix-os/hal/char/uart/16550_pmio.c +++ b/lunaix-os/hal/char/uart/16550_pmio.c @@ -9,7 +9,7 @@ * */ #include -#include +#include #include @@ -36,9 +36,10 @@ com_regwrite(struct uart16550* uart, ptr_t regoff, u32_t val) } static void -com_irq_handler(const isr_param* param) +com_irq_handler(const struct hart_state* hstate) { - uart_general_irq_handler(param->execp->vector, &com_ports); + int vector = hart_vector_stamp(hstate); + uart_general_irq_handler(vector, &com_ports); } static int @@ -77,7 +78,7 @@ upiom_init(struct device_def* def) uart_enable_fifo(uart, UART_FIFO8); llist_append(&com_ports, &uart->local_ports); - struct serial_dev* sdev = serial_create(&def->class); + struct serial_dev* sdev = serial_create(&def->class, "S"); sdev->backend = uart; sdev->write = uart_general_tx; sdev->exec_cmd = uart_general_exec_cmd; @@ -97,8 +98,8 @@ upiom_init(struct device_def* def) } static struct device_def uart_pmio_def = { - .class = DEVCLASS(DEVIF_SOC, DEVFN_CHAR, DEV_SERIAL, 0), + .class = DEVCLASS(DEVIF_SOC, DEVFN_CHAR, DEV_UART16550), .name = "16550 Generic UART (I/O)", .init = upiom_init }; -EXPORT_DEVICE(uart16550_pmio, &uart_pmio_def, load_earlystage); \ No newline at end of file +EXPORT_DEVICE(uart16550_pmio, &uart_pmio_def, load_onboot); \ No newline at end of file