Lines Matching refs:pdata
103 static u8 sio_read_reg(struct fintek_8250 *pdata, u8 reg) in sio_read_reg() argument
105 outb(reg, pdata->base_port + ADDR_PORT); in sio_read_reg()
106 return inb(pdata->base_port + DATA_PORT); in sio_read_reg()
109 static void sio_write_reg(struct fintek_8250 *pdata, u8 reg, u8 data) in sio_write_reg() argument
111 outb(reg, pdata->base_port + ADDR_PORT); in sio_write_reg()
112 outb(data, pdata->base_port + DATA_PORT); in sio_write_reg()
115 static void sio_write_mask_reg(struct fintek_8250 *pdata, u8 reg, u8 mask, in sio_write_mask_reg() argument
120 tmp = (sio_read_reg(pdata, reg) & ~mask) | (mask & data); in sio_write_mask_reg()
121 sio_write_reg(pdata, reg, tmp); in sio_write_mask_reg()
144 static int fintek_8250_check_id(struct fintek_8250 *pdata) in fintek_8250_check_id() argument
148 if (sio_read_reg(pdata, VENDOR_ID1) != VENDOR_ID1_VAL) in fintek_8250_check_id()
151 if (sio_read_reg(pdata, VENDOR_ID2) != VENDOR_ID2_VAL) in fintek_8250_check_id()
154 chip = sio_read_reg(pdata, CHIP_ID1); in fintek_8250_check_id()
155 chip |= sio_read_reg(pdata, CHIP_ID2) << 8; in fintek_8250_check_id()
170 pdata->pid = chip; in fintek_8250_check_id()
174 static int fintek_8250_get_ldn_range(struct fintek_8250 *pdata, int *min, in fintek_8250_get_ldn_range() argument
177 switch (pdata->pid) { in fintek_8250_get_ldn_range()
201 struct fintek_8250 *pdata = port->private_data; in fintek_8250_rs485_config() local
203 if (!pdata) in fintek_8250_rs485_config()
228 if (fintek_8250_enter_key(pdata->base_port, pdata->key)) in fintek_8250_rs485_config()
231 sio_write_reg(pdata, LDN, pdata->index); in fintek_8250_rs485_config()
232 sio_write_reg(pdata, RS485, config); in fintek_8250_rs485_config()
233 fintek_8250_exit_key(pdata->base_port); in fintek_8250_rs485_config()
238 static void fintek_8250_set_irq_mode(struct fintek_8250 *pdata, bool is_level) in fintek_8250_set_irq_mode() argument
240 sio_write_reg(pdata, LDN, pdata->index); in fintek_8250_set_irq_mode()
242 switch (pdata->pid) { in fintek_8250_set_irq_mode()
245 sio_write_mask_reg(pdata, F81866_FIFO_CTRL, F81866_IRQ_MODE1, in fintek_8250_set_irq_mode()
249 sio_write_mask_reg(pdata, F81866_IRQ_MODE, F81866_IRQ_SHARE, in fintek_8250_set_irq_mode()
251 sio_write_mask_reg(pdata, F81866_IRQ_MODE, F81866_IRQ_MODE0, in fintek_8250_set_irq_mode()
259 sio_write_mask_reg(pdata, FINTEK_IRQ_MODE, IRQ_SHARE, in fintek_8250_set_irq_mode()
261 sio_write_mask_reg(pdata, FINTEK_IRQ_MODE, IRQ_MODE_MASK, in fintek_8250_set_irq_mode()
267 static void fintek_8250_set_max_fifo(struct fintek_8250 *pdata) in fintek_8250_set_max_fifo() argument
269 switch (pdata->pid) { in fintek_8250_set_max_fifo()
274 sio_write_mask_reg(pdata, FIFO_CTRL, in fintek_8250_set_max_fifo()
288 struct fintek_8250 *pdata = port->private_data; in fintek_8250_set_termios() local
304 switch (pdata->pid) { in fintek_8250_set_termios()
317 __func__, pdata->pid); in fintek_8250_set_termios()
328 if (fintek_8250_enter_key(pdata->base_port, pdata->key)) in fintek_8250_set_termios()
333 sio_write_reg(pdata, LDN, pdata->index); in fintek_8250_set_termios()
334 sio_write_mask_reg(pdata, reg, F81866_UART_CLK_MASK, in fintek_8250_set_termios()
337 fintek_8250_exit_key(pdata->base_port); in fintek_8250_set_termios()
352 struct fintek_8250 *pdata = uart->port.private_data; in fintek_8250_set_termios_handler() local
354 switch (pdata->pid) { in fintek_8250_set_termios_handler()
367 static int probe_setup_port(struct fintek_8250 *pdata, in probe_setup_port() argument
378 pdata->base_port = addr[i]; in probe_setup_port()
379 pdata->key = keys[j]; in probe_setup_port()
383 if (fintek_8250_check_id(pdata) || in probe_setup_port()
384 fintek_8250_get_ldn_range(pdata, &min, &max)) { in probe_setup_port()
392 sio_write_reg(pdata, LDN, k); in probe_setup_port()
393 aux = sio_read_reg(pdata, IO_ADDR1); in probe_setup_port()
394 aux |= sio_read_reg(pdata, IO_ADDR2) << 8; in probe_setup_port()
398 pdata->index = k; in probe_setup_port()
405 fintek_8250_set_irq_mode(pdata, level_mode); in probe_setup_port()
406 fintek_8250_set_max_fifo(pdata); in probe_setup_port()
433 struct fintek_8250 *pdata = uart->port.private_data; in fintek_8250_set_rs485_handler() local
435 switch (pdata->pid) { in fintek_8250_set_rs485_handler()
442 if (!pdata->index) in fintek_8250_set_rs485_handler()
460 struct fintek_8250 *pdata; in fintek_8250_probe() local
466 pdata = devm_kzalloc(uart->port.dev, sizeof(*pdata), GFP_KERNEL); in fintek_8250_probe()
467 if (!pdata) in fintek_8250_probe()
470 memcpy(pdata, &probe_data, sizeof(probe_data)); in fintek_8250_probe()
471 uart->port.private_data = pdata; in fintek_8250_probe()