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()
214 struct mid8250 *mid = p->private_data; in mid8250_set_termios() local
223 if (mid->board->freq < fuart) { in mid8250_set_termios()
225 if (mid->board->freq > baud) in mid8250_set_termios()
226 ps = mid->board->freq / baud; /* baud rate too high */ in mid8250_set_termios()
232 fuart *= rounddown_pow_of_two(mid->board->freq / fuart); in mid8250_set_termios()
235 rational_best_approximation(fuart, mid->board->freq, w, w, &mul, &div); in mid8250_set_termios()
256 static int mid8250_dma_setup(struct mid8250 *mid, struct uart_8250_port *port) in mid8250_dma_setup() argument
258 struct uart_8250_dma *dma = &mid->dma; in mid8250_dma_setup()
263 if (!mid->dma_dev) in mid8250_dma_setup()
274 rx_param->chan_id = mid->dma_index * 2 + 1; in mid8250_dma_setup()
275 tx_param->chan_id = mid->dma_index * 2; in mid8250_dma_setup()
280 rx_param->dma_dev = &mid->dma_dev->dev; in mid8250_dma_setup()
281 tx_param->dma_dev = &mid->dma_dev->dev; in mid8250_dma_setup()
294 struct mid8250 *mid; in mid8250_probe() local
302 mid = devm_kzalloc(&pdev->dev, sizeof(*mid), GFP_KERNEL); in mid8250_probe()
303 if (!mid) in mid8250_probe()
306 mid->board = (struct mid8250_board *)id->driver_data; in mid8250_probe()
307 bar = FL_GET_BASE(mid->board->flags); in mid8250_probe()
313 uart.port.private_data = mid; in mid8250_probe()
316 uart.port.uartclk = mid->board->base_baud * 16; in mid8250_probe()
325 if (mid->board->setup) { in mid8250_probe()
326 ret = mid->board->setup(mid, &uart.port); in mid8250_probe()
331 ret = mid8250_dma_setup(mid, &uart); in mid8250_probe()
339 mid->line = ret; in mid8250_probe()
341 pci_set_drvdata(pdev, mid); in mid8250_probe()
345 mid->board->exit(mid); in mid8250_probe()
351 struct mid8250 *mid = pci_get_drvdata(pdev); in mid8250_remove() local
353 serial8250_unregister_port(mid->line); in mid8250_remove()
355 mid->board->exit(mid); in mid8250_remove()
406 MODULE_DESCRIPTION("Intel MID UART driver");