Lines Matching full:mid
26 /* Intel MID Specific registers */
53 static int pnw_setup(struct mid8250 *mid, struct uart_port *p) in pnw_setup() argument
59 mid->dma_index = 0; in pnw_setup()
62 mid->dma_index = 1; in pnw_setup()
65 mid->dma_index = 2; in pnw_setup()
71 mid->dma_dev = pci_get_slot(pdev->bus, in pnw_setup()
76 static void pnw_exit(struct mid8250 *mid) in pnw_exit() argument
78 pci_dev_put(mid->dma_dev); in pnw_exit()
83 struct mid8250 *mid = p->private_data; in tng_handle_irq() local
90 chip = pci_get_drvdata(mid->dma_dev); in tng_handle_irq()
93 err = hsu_dma_get_status(chip, mid->dma_index * 2 + 1, &status); in tng_handle_irq()
98 ret |= hsu_dma_do_irq(chip, mid->dma_index * 2 + 1, status); in tng_handle_irq()
101 err = hsu_dma_get_status(chip, mid->dma_index * 2, &status); in tng_handle_irq()
105 ret |= hsu_dma_do_irq(chip, mid->dma_index * 2, status); in tng_handle_irq()
112 static int tng_setup(struct mid8250 *mid, struct uart_port *p) in tng_setup() argument
125 mid->dma_index = index; in tng_setup()
126 mid->dma_dev = pci_get_slot(pdev->bus, PCI_DEVFN(5, 0)); in tng_setup()
132 static void tng_exit(struct mid8250 *mid) in tng_exit() argument
134 pci_dev_put(mid->dma_dev); in tng_exit()
139 struct mid8250 *mid = p->private_data; in dnv_handle_irq() local
147 err = hsu_dma_get_status(&mid->dma_chip, 1, &status); in dnv_handle_irq()
152 ret |= hsu_dma_do_irq(&mid->dma_chip, 1, status); in dnv_handle_irq()
155 err = hsu_dma_get_status(&mid->dma_chip, 0, &status); in dnv_handle_irq()
159 ret |= hsu_dma_do_irq(&mid->dma_chip, 0, status); in dnv_handle_irq()
168 static int dnv_setup(struct mid8250 *mid, struct uart_port *p) in dnv_setup() argument
170 struct hsu_dma_chip *chip = &mid->dma_chip; in dnv_setup()
172 unsigned int bar = FL_GET_BASE(mid->board->flags); in dnv_setup()
194 mid->dma_dev = pdev; in dnv_setup()
200 static void dnv_exit(struct mid8250 *mid) in dnv_exit() argument
202 if (!mid->dma_dev) in dnv_exit()
204 hsu_dma_remove(&mid->dma_chip); in dnv_exit()
213 struct mid8250 *mid = p->private_data; in mid8250_set_termios() local
222 if (mid->board->freq < fuart) { in mid8250_set_termios()
224 if (mid->board->freq > baud) in mid8250_set_termios()
225 ps = mid->board->freq / baud; /* baud rate too high */ in mid8250_set_termios()
231 fuart *= rounddown_pow_of_two(mid->board->freq / fuart); in mid8250_set_termios()
234 rational_best_approximation(fuart, mid->board->freq, w, w, &mul, &div); in mid8250_set_termios()
255 static int mid8250_dma_setup(struct mid8250 *mid, struct uart_8250_port *port) in mid8250_dma_setup() argument
257 struct uart_8250_dma *dma = &mid->dma; in mid8250_dma_setup()
262 if (!mid->dma_dev) in mid8250_dma_setup()
273 rx_param->chan_id = mid->dma_index * 2 + 1; in mid8250_dma_setup()
274 tx_param->chan_id = mid->dma_index * 2; in mid8250_dma_setup()
279 rx_param->dma_dev = &mid->dma_dev->dev; in mid8250_dma_setup()
280 tx_param->dma_dev = &mid->dma_dev->dev; in mid8250_dma_setup()
293 struct mid8250 *mid; in mid8250_probe() local
301 mid = devm_kzalloc(&pdev->dev, sizeof(*mid), GFP_KERNEL); in mid8250_probe()
302 if (!mid) in mid8250_probe()
305 mid->board = (struct mid8250_board *)id->driver_data; in mid8250_probe()
306 bar = FL_GET_BASE(mid->board->flags); in mid8250_probe()
312 uart.port.private_data = mid; in mid8250_probe()
315 uart.port.uartclk = mid->board->base_baud * 16; in mid8250_probe()
324 ret = mid->board->setup(mid, &uart.port); in mid8250_probe()
328 ret = mid8250_dma_setup(mid, &uart); in mid8250_probe()
336 mid->line = ret; in mid8250_probe()
338 pci_set_drvdata(pdev, mid); in mid8250_probe()
342 mid->board->exit(mid); in mid8250_probe()
348 struct mid8250 *mid = pci_get_drvdata(pdev); in mid8250_remove() local
350 serial8250_unregister_port(mid->line); in mid8250_remove()
352 mid->board->exit(mid); in mid8250_remove()
401 MODULE_DESCRIPTION("Intel MID UART driver");