kuart
struct kuart *kuart = port->private_data;
if (mode == kuart->mode)
if (kuart->flags & KUART_USE_CAPABILITY) {
kuart_set_phy_mode(kuart, KUART_MODE_NONE);
if (kuart->flags & KUART_USE_CAPABILITY) {
kuart_set_phy_mode(kuart, mode);
kuart->mode = mode;
struct kuart *kuart;
kuart = devm_kzalloc(dev, sizeof(*kuart), GFP_KERNEL);
if (!kuart)
kuart->auxdev = container_of(auxdev, struct keba_uart_auxdev, auxdev);
kuart->flags = id->driver_data;
auxiliary_set_drvdata(auxdev, kuart);
res = kuart->auxdev->io;
kuart->base = devm_ioremap_resource(dev, &res);
if (IS_ERR(kuart->base))
return PTR_ERR(kuart->base);
if (kuart->flags & KUART_USE_CAPABILITY) {
kuart->capability = ioread8(kuart->base + KUART_CAPABILITY) &
if ((kuart->capability & ~KUART_CAPABILITY_NONE) == 0)
uart.port.mapbase = kuart->auxdev->io.start + KUART_BASE;
uart.port.irq = kuart->auxdev->irq;
uart.port.private_data = kuart;
if (kuart->flags & KUART_RS485) {
if (kuart->flags & KUART_USE_CAPABILITY) {
if (kuart->capability & KUART_CAPABILITY_RS422) {
if (kuart->capability & KUART_CAPABILITY_RS485) {
kuart->line = retval;
struct kuart *kuart = auxiliary_get_drvdata(auxdev);
if (kuart->flags & KUART_USE_CAPABILITY)
kuart_set_phy_mode(kuart, KUART_MODE_NONE);
serial8250_unregister_port(kuart->line);
static void kuart_set_phy_mode(struct kuart *kuart, enum kuart_mode mode)
iowrite8(mode, kuart->base + KUART_CONTROL);