Lines Matching refs:s

281 	struct max310x_port *s = dev_get_drvdata(port->dev);  in max310x_port_read()  local
284 regmap_read(s->regmap, port->iobase + reg, &val); in max310x_port_read()
291 struct max310x_port *s = dev_get_drvdata(port->dev); in max310x_port_write() local
293 regmap_write(s->regmap, port->iobase + reg, val); in max310x_port_write()
298 struct max310x_port *s = dev_get_drvdata(port->dev); in max310x_port_update() local
300 regmap_update_bits(s->regmap, port->iobase + reg, mask, val); in max310x_port_update()
305 struct max310x_port *s = dev_get_drvdata(dev); in max3107_detect() local
309 ret = regmap_read(s->regmap, MAX310X_REVID_REG, &val); in max3107_detect()
315 "%s ID 0x%02x does not match\n", s->devtype->name, val); in max3107_detect()
324 struct max310x_port *s = dev_get_drvdata(dev); in max3108_detect() local
331 ret = regmap_read(s->regmap, MAX310X_CLKSRC_REG, &val); in max3108_detect()
336 dev_err(dev, "%s not present\n", s->devtype->name); in max3108_detect()
345 struct max310x_port *s = dev_get_drvdata(dev); in max3109_detect() local
349 ret = regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, in max3109_detect()
354 regmap_read(s->regmap, MAX310X_REVID_EXTREG, &val); in max3109_detect()
355 regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, MAX310X_EXTREG_DSBL); in max3109_detect()
358 "%s ID 0x%02x does not match\n", s->devtype->name, val); in max3109_detect()
376 struct max310x_port *s = dev_get_drvdata(dev); in max14830_detect() local
380 ret = regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, in max14830_detect()
385 regmap_read(s->regmap, MAX310X_REVID_EXTREG, &val); in max14830_detect()
386 regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, MAX310X_EXTREG_DSBL); in max14830_detect()
389 "%s ID 0x%02x does not match\n", s->devtype->name, val); in max14830_detect()
529 static int max310x_set_ref_clk(struct max310x_port *s, unsigned long freq, in max310x_set_ref_clk() argument
579 regmap_write(s->regmap, MAX310X_PLLCFG_REG, pllcfg); in max310x_set_ref_clk()
583 regmap_write(s->regmap, MAX310X_CLKSRC_REG, clksrc); in max310x_set_ref_clk()
686 static void max310x_port_irq(struct max310x_port *s, int portno) in max310x_port_irq() argument
688 struct uart_port *port = &s->p[portno].port; in max310x_port_irq()
707 mutex_lock(&s->mutex); in max310x_port_irq()
709 mutex_unlock(&s->mutex); in max310x_port_irq()
716 struct max310x_port *s = (struct max310x_port *)dev_id; in max310x_ist() local
718 if (s->uart.nr > 1) { in max310x_ist()
722 WARN_ON_ONCE(regmap_read(s->regmap, in max310x_ist()
724 val = ((1 << s->uart.nr) - 1) & ~val; in max310x_ist()
727 max310x_port_irq(s, fls(val) - 1); in max310x_ist()
730 max310x_port_irq(s, 0); in max310x_ist()
738 struct max310x_port *s = dev_get_drvdata(one->port.dev); in max310x_wq_proc() local
740 mutex_lock(&s->mutex); in max310x_wq_proc()
742 mutex_unlock(&s->mutex); in max310x_wq_proc()
915 struct max310x_port *s = dev_get_drvdata(port->dev); in max310x_startup() local
918 s->devtype->power(port, 1); in max310x_startup()
947 struct max310x_port *s = dev_get_drvdata(port->dev); in max310x_shutdown() local
952 s->devtype->power(port, 0); in max310x_shutdown()
957 struct max310x_port *s = dev_get_drvdata(port->dev); in max310x_type() local
959 return (port->type == PORT_MAX310X) ? s->devtype->name : NULL; in max310x_type()
974 static int max310x_verify_port(struct uart_port *port, struct serial_struct *s) in max310x_verify_port() argument
976 if ((s->type != PORT_UNKNOWN) && (s->type != PORT_MAX310X)) in max310x_verify_port()
978 if (s->irq != port->irq) in max310x_verify_port()
1009 struct max310x_port *s = dev_get_drvdata(dev); in max310x_suspend() local
1012 for (i = 0; i < s->uart.nr; i++) { in max310x_suspend()
1013 uart_suspend_port(&s->uart, &s->p[i].port); in max310x_suspend()
1014 s->devtype->power(&s->p[i].port, 0); in max310x_suspend()
1022 struct max310x_port *s = dev_get_drvdata(dev); in max310x_resume() local
1025 for (i = 0; i < s->uart.nr; i++) { in max310x_resume()
1026 s->devtype->power(&s->p[i].port, 1); in max310x_resume()
1027 uart_resume_port(&s->uart, &s->p[i].port); in max310x_resume()
1039 struct max310x_port *s = container_of(chip, struct max310x_port, gpio); in max310x_gpio_get() local
1040 struct uart_port *port = &s->p[offset / 4].port; in max310x_gpio_get()
1049 struct max310x_port *s = container_of(chip, struct max310x_port, gpio); in max310x_gpio_set() local
1050 struct uart_port *port = &s->p[offset / 4].port; in max310x_gpio_set()
1058 struct max310x_port *s = container_of(chip, struct max310x_port, gpio); in max310x_gpio_direction_input() local
1059 struct uart_port *port = &s->p[offset / 4].port; in max310x_gpio_direction_input()
1069 struct max310x_port *s = container_of(chip, struct max310x_port, gpio); in max310x_gpio_direction_output() local
1070 struct uart_port *port = &s->p[offset / 4].port; in max310x_gpio_direction_output()
1086 struct max310x_port *s; in max310x_probe() local
1093 s = devm_kzalloc(dev, sizeof(*s) + in max310x_probe()
1095 if (!s) { in max310x_probe()
1103 s->clk = clk_osc; in max310x_probe()
1107 s->clk = clk_xtal; in max310x_probe()
1119 ret = clk_prepare_enable(s->clk); in max310x_probe()
1123 freq = clk_get_rate(s->clk); in max310x_probe()
1130 s->regmap = regmap; in max310x_probe()
1131 s->devtype = devtype; in max310x_probe()
1132 dev_set_drvdata(dev, s); in max310x_probe()
1143 regmap_write(s->regmap, MAX310X_MODE2_REG + offs, in max310x_probe()
1146 regmap_write(s->regmap, MAX310X_MODE2_REG + offs, 0); in max310x_probe()
1150 regmap_read(s->regmap, in max310x_probe()
1154 regmap_update_bits(s->regmap, MAX310X_MODE1_REG + offs, in max310x_probe()
1159 uartclk = max310x_set_ref_clk(s, freq, xtal); in max310x_probe()
1163 s->uart.owner = THIS_MODULE; in max310x_probe()
1164 s->uart.dev_name = "ttyMAX"; in max310x_probe()
1165 s->uart.major = MAX310X_MAJOR; in max310x_probe()
1166 s->uart.minor = MAX310X_MINOR; in max310x_probe()
1167 s->uart.nr = devtype->nr; in max310x_probe()
1168 ret = uart_register_driver(&s->uart); in max310x_probe()
1176 s->gpio.owner = THIS_MODULE; in max310x_probe()
1177 s->gpio.dev = dev; in max310x_probe()
1178 s->gpio.label = dev_name(dev); in max310x_probe()
1179 s->gpio.direction_input = max310x_gpio_direction_input; in max310x_probe()
1180 s->gpio.get = max310x_gpio_get; in max310x_probe()
1181 s->gpio.direction_output= max310x_gpio_direction_output; in max310x_probe()
1182 s->gpio.set = max310x_gpio_set; in max310x_probe()
1183 s->gpio.base = -1; in max310x_probe()
1184 s->gpio.ngpio = devtype->nr * 4; in max310x_probe()
1185 s->gpio.can_sleep = 1; in max310x_probe()
1186 ret = gpiochip_add(&s->gpio); in max310x_probe()
1191 mutex_init(&s->mutex); in max310x_probe()
1195 s->p[i].port.line = i; in max310x_probe()
1196 s->p[i].port.dev = dev; in max310x_probe()
1197 s->p[i].port.irq = irq; in max310x_probe()
1198 s->p[i].port.type = PORT_MAX310X; in max310x_probe()
1199 s->p[i].port.fifosize = MAX310X_FIFO_SIZE; in max310x_probe()
1200 s->p[i].port.flags = UPF_FIXED_TYPE | UPF_LOW_LATENCY; in max310x_probe()
1201 s->p[i].port.iotype = UPIO_PORT; in max310x_probe()
1202 s->p[i].port.iobase = i * 0x20; in max310x_probe()
1203 s->p[i].port.membase = (void __iomem *)~0; in max310x_probe()
1204 s->p[i].port.uartclk = uartclk; in max310x_probe()
1205 s->p[i].port.rs485_config = max310x_rs485_config; in max310x_probe()
1206 s->p[i].port.ops = &max310x_ops; in max310x_probe()
1208 max310x_port_write(&s->p[i].port, MAX310X_IRQEN_REG, 0); in max310x_probe()
1210 max310x_port_read(&s->p[i].port, MAX310X_IRQSTS_REG); in max310x_probe()
1212 max310x_port_update(&s->p[i].port, MAX310X_MODE1_REG, in max310x_probe()
1216 INIT_WORK(&s->p[i].tx_work, max310x_wq_proc); in max310x_probe()
1218 INIT_WORK(&s->p[i].md_work, max310x_md_proc); in max310x_probe()
1220 uart_add_one_port(&s->uart, &s->p[i].port); in max310x_probe()
1222 devtype->power(&s->p[i].port, 0); in max310x_probe()
1227 IRQF_ONESHOT | flags, dev_name(dev), s); in max310x_probe()
1233 mutex_destroy(&s->mutex); in max310x_probe()
1236 gpiochip_remove(&s->gpio); in max310x_probe()
1240 uart_unregister_driver(&s->uart); in max310x_probe()
1243 clk_disable_unprepare(s->clk); in max310x_probe()
1250 struct max310x_port *s = dev_get_drvdata(dev); in max310x_remove() local
1254 gpiochip_remove(&s->gpio); in max310x_remove()
1257 for (i = 0; i < s->uart.nr; i++) { in max310x_remove()
1258 cancel_work_sync(&s->p[i].tx_work); in max310x_remove()
1259 cancel_work_sync(&s->p[i].md_work); in max310x_remove()
1260 uart_remove_one_port(&s->uart, &s->p[i].port); in max310x_remove()
1261 s->devtype->power(&s->p[i].port, 0); in max310x_remove()
1264 mutex_destroy(&s->mutex); in max310x_remove()
1265 uart_unregister_driver(&s->uart); in max310x_remove()
1266 clk_disable_unprepare(s->clk); in max310x_remove()