Lines Matching refs:s

326 	struct sc16is7xx_port *s = dev_get_drvdata(port->dev);  in sc16is7xx_port_read()  local
329 regmap_read(s->regmap, in sc16is7xx_port_read()
337 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_port_write() local
339 regmap_write(s->regmap, in sc16is7xx_port_write()
346 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_port_update() local
348 regmap_update_bits(s->regmap, in sc16is7xx_port_update()
423 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_set_baud() local
440 regcache_cache_bypass(s->regmap, true); in sc16is7xx_set_baud()
443 regcache_cache_bypass(s->regmap, false); in sc16is7xx_set_baud()
457 regcache_cache_bypass(s->regmap, true); in sc16is7xx_set_baud()
460 regcache_cache_bypass(s->regmap, false); in sc16is7xx_set_baud()
471 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_handle_rx() local
475 if (unlikely(rxlen >= sizeof(s->buf))) { in sc16is7xx_handle_rx()
481 rxlen = sizeof(s->buf); in sc16is7xx_handle_rx()
494 s->buf[0] = sc16is7xx_port_read(port, SC16IS7XX_RHR_REG); in sc16is7xx_handle_rx()
497 regcache_cache_bypass(s->regmap, true); in sc16is7xx_handle_rx()
498 regmap_raw_read(s->regmap, SC16IS7XX_RHR_REG, in sc16is7xx_handle_rx()
499 s->buf, rxlen); in sc16is7xx_handle_rx()
500 regcache_cache_bypass(s->regmap, false); in sc16is7xx_handle_rx()
533 ch = s->buf[i]; in sc16is7xx_handle_rx()
551 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_handle_tx() local
577 s->buf[i] = xmit->buf[xmit->tail]; in sc16is7xx_handle_tx()
580 regcache_cache_bypass(s->regmap, true); in sc16is7xx_handle_tx()
581 regmap_raw_write(s->regmap, SC16IS7XX_THR_REG, s->buf, to_send); in sc16is7xx_handle_tx()
582 regcache_cache_bypass(s->regmap, false); in sc16is7xx_handle_tx()
589 static void sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno) in sc16is7xx_port_irq() argument
591 struct uart_port *port = &s->p[portno].port; in sc16is7xx_port_irq()
618 mutex_lock(&s->mutex); in sc16is7xx_port_irq()
620 mutex_unlock(&s->mutex); in sc16is7xx_port_irq()
633 struct sc16is7xx_port *s = (struct sc16is7xx_port *)dev_id; in sc16is7xx_ist() local
636 for (i = 0; i < s->uart.nr; ++i) in sc16is7xx_ist()
637 sc16is7xx_port_irq(s, i); in sc16is7xx_ist()
645 struct sc16is7xx_port *s = dev_get_drvdata(one->port.dev); in sc16is7xx_wq_proc() local
647 mutex_lock(&s->mutex); in sc16is7xx_wq_proc()
649 mutex_unlock(&s->mutex); in sc16is7xx_wq_proc()
744 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_set_termios() local
802 regcache_cache_bypass(s->regmap, true); in sc16is7xx_set_termios()
814 regcache_cache_bypass(s->regmap, false); in sc16is7xx_set_termios()
865 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_startup() local
881 regcache_cache_bypass(s->regmap, true); in sc16is7xx_startup()
898 regcache_cache_bypass(s->regmap, false); in sc16is7xx_startup()
933 struct sc16is7xx_port *s = dev_get_drvdata(port->dev); in sc16is7xx_type() local
935 return (port->type == PORT_SC16IS7XX) ? s->devtype->name : NULL; in sc16is7xx_type()
951 struct serial_struct *s) in sc16is7xx_verify_port() argument
953 if ((s->type != PORT_UNKNOWN) && (s->type != PORT_SC16IS7XX)) in sc16is7xx_verify_port()
955 if (s->irq != port->irq) in sc16is7xx_verify_port()
995 struct sc16is7xx_port *s = container_of(chip, struct sc16is7xx_port, in sc16is7xx_gpio_get() local
997 struct uart_port *port = &s->p[0].port; in sc16is7xx_gpio_get()
1006 struct sc16is7xx_port *s = container_of(chip, struct sc16is7xx_port, in sc16is7xx_gpio_set() local
1008 struct uart_port *port = &s->p[0].port; in sc16is7xx_gpio_set()
1017 struct sc16is7xx_port *s = container_of(chip, struct sc16is7xx_port, in sc16is7xx_gpio_direction_input() local
1019 struct uart_port *port = &s->p[0].port; in sc16is7xx_gpio_direction_input()
1029 struct sc16is7xx_port *s = container_of(chip, struct sc16is7xx_port, in sc16is7xx_gpio_direction_output() local
1031 struct uart_port *port = &s->p[0].port; in sc16is7xx_gpio_direction_output()
1048 struct sc16is7xx_port *s; in sc16is7xx_probe() local
1054 s = devm_kzalloc(dev, sizeof(*s) + in sc16is7xx_probe()
1057 if (!s) { in sc16is7xx_probe()
1062 s->clk = devm_clk_get(dev, NULL); in sc16is7xx_probe()
1063 if (IS_ERR(s->clk)) { in sc16is7xx_probe()
1067 return PTR_ERR(s->clk); in sc16is7xx_probe()
1069 clk_prepare_enable(s->clk); in sc16is7xx_probe()
1070 freq = clk_get_rate(s->clk); in sc16is7xx_probe()
1073 s->regmap = regmap; in sc16is7xx_probe()
1074 s->devtype = devtype; in sc16is7xx_probe()
1075 dev_set_drvdata(dev, s); in sc16is7xx_probe()
1078 s->uart.owner = THIS_MODULE; in sc16is7xx_probe()
1079 s->uart.dev_name = "ttySC"; in sc16is7xx_probe()
1080 s->uart.nr = devtype->nr_uart; in sc16is7xx_probe()
1081 ret = uart_register_driver(&s->uart); in sc16is7xx_probe()
1090 s->gpio.owner = THIS_MODULE; in sc16is7xx_probe()
1091 s->gpio.dev = dev; in sc16is7xx_probe()
1092 s->gpio.label = dev_name(dev); in sc16is7xx_probe()
1093 s->gpio.direction_input = sc16is7xx_gpio_direction_input; in sc16is7xx_probe()
1094 s->gpio.get = sc16is7xx_gpio_get; in sc16is7xx_probe()
1095 s->gpio.direction_output = sc16is7xx_gpio_direction_output; in sc16is7xx_probe()
1096 s->gpio.set = sc16is7xx_gpio_set; in sc16is7xx_probe()
1097 s->gpio.base = -1; in sc16is7xx_probe()
1098 s->gpio.ngpio = devtype->nr_gpio; in sc16is7xx_probe()
1099 s->gpio.can_sleep = 1; in sc16is7xx_probe()
1100 ret = gpiochip_add(&s->gpio); in sc16is7xx_probe()
1106 mutex_init(&s->mutex); in sc16is7xx_probe()
1110 s->p[i].port.line = i; in sc16is7xx_probe()
1111 s->p[i].port.dev = dev; in sc16is7xx_probe()
1112 s->p[i].port.irq = irq; in sc16is7xx_probe()
1113 s->p[i].port.type = PORT_SC16IS7XX; in sc16is7xx_probe()
1114 s->p[i].port.fifosize = SC16IS7XX_FIFO_SIZE; in sc16is7xx_probe()
1115 s->p[i].port.flags = UPF_FIXED_TYPE | UPF_LOW_LATENCY; in sc16is7xx_probe()
1116 s->p[i].port.iotype = UPIO_PORT; in sc16is7xx_probe()
1117 s->p[i].port.uartclk = freq; in sc16is7xx_probe()
1118 s->p[i].port.rs485_config = sc16is7xx_config_rs485; in sc16is7xx_probe()
1119 s->p[i].port.ops = &sc16is7xx_ops; in sc16is7xx_probe()
1121 sc16is7xx_port_write(&s->p[i].port, SC16IS7XX_IER_REG, 0); in sc16is7xx_probe()
1123 sc16is7xx_port_write(&s->p[i].port, SC16IS7XX_EFCR_REG, in sc16is7xx_probe()
1127 INIT_WORK(&s->p[i].tx_work, sc16is7xx_wq_proc); in sc16is7xx_probe()
1129 INIT_WORK(&s->p[i].md_work, sc16is7xx_md_proc); in sc16is7xx_probe()
1131 uart_add_one_port(&s->uart, &s->p[i].port); in sc16is7xx_probe()
1133 sc16is7xx_power(&s->p[i].port, 0); in sc16is7xx_probe()
1138 IRQF_ONESHOT | flags, dev_name(dev), s); in sc16is7xx_probe()
1142 for (i = 0; i < s->uart.nr; i++) in sc16is7xx_probe()
1143 uart_remove_one_port(&s->uart, &s->p[i].port); in sc16is7xx_probe()
1145 mutex_destroy(&s->mutex); in sc16is7xx_probe()
1149 gpiochip_remove(&s->gpio); in sc16is7xx_probe()
1153 uart_unregister_driver(&s->uart); in sc16is7xx_probe()
1156 if (!IS_ERR(s->clk)) in sc16is7xx_probe()
1157 clk_disable_unprepare(s->clk); in sc16is7xx_probe()
1164 struct sc16is7xx_port *s = dev_get_drvdata(dev); in sc16is7xx_remove() local
1168 if (s->devtype->nr_gpio) in sc16is7xx_remove()
1169 gpiochip_remove(&s->gpio); in sc16is7xx_remove()
1172 for (i = 0; i < s->uart.nr; i++) { in sc16is7xx_remove()
1173 cancel_work_sync(&s->p[i].tx_work); in sc16is7xx_remove()
1174 cancel_work_sync(&s->p[i].md_work); in sc16is7xx_remove()
1175 uart_remove_one_port(&s->uart, &s->p[i].port); in sc16is7xx_remove()
1176 sc16is7xx_power(&s->p[i].port, 0); in sc16is7xx_remove()
1179 mutex_destroy(&s->mutex); in sc16is7xx_remove()
1180 uart_unregister_driver(&s->uart); in sc16is7xx_remove()
1181 if (!IS_ERR(s->clk)) in sc16is7xx_remove()
1182 clk_disable_unprepare(s->clk); in sc16is7xx_remove()