Lines Matching +full:esp32s3 +full:- +full:acm

1 // SPDX-License-Identifier: GPL-2.0-or-later
17 #define DRIVER_NAME "esp32s3-acm"
41 .compatible = "esp,esp32s3-acm",
50 writel(v, port->membase + reg); in esp32s3_acm_write()
55 return readl(port->membase + reg); in esp32s3_acm_read()
105 struct tty_port *tty_port = &port->state->port; in esp32s3_acm_rxint()
113 spin_lock_irqsave(&port->lock, flags); in esp32s3_acm_rxint()
118 ++port->icount.rx; in esp32s3_acm_rxint()
121 spin_unlock_irqrestore(&port->lock, flags); in esp32s3_acm_rxint()
144 dev_warn(port->dev, "timeout waiting for TX FIFO\n"); in esp32s3_acm_put_char_sync()
164 ESP32S3_ACM_TX_FIFO_SIZE - tx_fifo_used, in esp32s3_acm_transmit_buffer()
216 ret = request_irq(port->irq, esp32s3_acm_int, 0, DRIVER_NAME, port); in esp32s3_acm_startup()
228 free_irq(port->irq, port); in esp32s3_acm_shutdown()
239 return "ESP32S3 ACM"; in esp32s3_acm_type()
242 /* configure/auto-configure the port */
246 port->type = PORT_GENERIC; in esp32s3_acm_config_port()
291 struct uart_port *port = esp32s3_acm_ports[co->index]; in esp32s3_acm_console_write()
295 if (port->sysrq) in esp32s3_acm_console_write()
298 locked = spin_trylock_irqsave(&port->lock, flags); in esp32s3_acm_console_write()
300 spin_lock_irqsave(&port->lock, flags); in esp32s3_acm_console_write()
305 spin_unlock_irqrestore(&port->lock, flags); in esp32s3_acm_console_write()
314 .index = -1,
321 struct earlycon_device *dev = con->data; in esp32s3_acm_earlycon_write()
323 uart_console_write(&dev->port, s, n, esp32s3_acm_put_char_sync); in esp32s3_acm_earlycon_write()
329 struct earlycon_device *dev = con->data; in esp32s3_acm_earlycon_read()
333 int c = esp32s3_acm_poll_get_char(&dev->port); in esp32s3_acm_earlycon_read()
346 if (!device->port.membase) in esp32s3_acm_early_console_setup()
347 return -ENODEV; in esp32s3_acm_early_console_setup()
349 device->con->write = esp32s3_acm_earlycon_write; in esp32s3_acm_early_console_setup()
351 device->con->read = esp32s3_acm_earlycon_read; in esp32s3_acm_early_console_setup()
356 OF_EARLYCON_DECLARE(esp32s3acm, "esp,esp32s3-acm",
369 struct device_node *np = pdev->dev.of_node; in esp32s3_acm_probe()
374 port = devm_kzalloc(&pdev->dev, sizeof(*port), GFP_KERNEL); in esp32s3_acm_probe()
376 return -ENOMEM; in esp32s3_acm_probe()
380 dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret); in esp32s3_acm_probe()
384 dev_err(&pdev->dev, "driver limited to %d serial ports\n", in esp32s3_acm_probe()
386 return -ENOMEM; in esp32s3_acm_probe()
389 port->line = ret; in esp32s3_acm_probe()
393 return -ENODEV; in esp32s3_acm_probe()
395 port->mapbase = res->start; in esp32s3_acm_probe()
396 port->membase = devm_ioremap_resource(&pdev->dev, res); in esp32s3_acm_probe()
397 if (IS_ERR(port->membase)) in esp32s3_acm_probe()
398 return PTR_ERR(port->membase); in esp32s3_acm_probe()
400 port->dev = &pdev->dev; in esp32s3_acm_probe()
401 port->type = PORT_GENERIC; in esp32s3_acm_probe()
402 port->iotype = UPIO_MEM; in esp32s3_acm_probe()
403 port->irq = platform_get_irq(pdev, 0); in esp32s3_acm_probe()
404 port->ops = &esp32s3_acm_pops; in esp32s3_acm_probe()
405 port->flags = UPF_BOOT_AUTOCONF; in esp32s3_acm_probe()
406 port->has_sysrq = 1; in esp32s3_acm_probe()
407 port->fifosize = ESP32S3_ACM_TX_FIFO_SIZE; in esp32s3_acm_probe()
409 esp32s3_acm_ports[port->line] = port; in esp32s3_acm_probe()
458 MODULE_DESCRIPTION("Espressif ESP32 USB ACM gadget support");