Lines Matching refs:data
258 * data available. If we see such a case then we'll do a bogus
310 up = serial8250_get_port(d->data.line);
316 unsigned long event, void *data)
446 static void dw8250_quirks(struct uart_port *p, struct dw8250_data *data)
451 unsigned int quirks = data->pdata->quirks;
464 data->skip_autocfg = true;
479 data->data.dma.txconf.device_fc = 1;
480 data->data.dma.rxconf.device_fc = 1;
481 data->data.dma.prepare_tx_dma = dw8250_prepare_tx_dma;
482 data->data.dma.prepare_rx_dma = dw8250_prepare_rx_dma;
489 data->uart_16550_compatible = true;
495 data->data.dma.rx_param = p->dev->parent;
496 data->data.dma.tx_param = p->dev->parent;
497 data->data.dma.fn = dw8250_idma_filter;
501 static void dw8250_clk_disable_unprepare(void *data)
503 clk_disable_unprepare(data);
506 static void dw8250_reset_control_assert(void *data)
508 reset_control_assert(data);
516 struct dw8250_data *data;
551 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
552 if (!data)
555 data->data.dma.fn = dw8250_fallback_dma_filter;
556 data->pdata = device_get_match_data(p->dev);
557 p->private_data = &data->data;
559 data->uart_16550_compatible = device_property_read_bool(dev,
575 data->msr_mask_on |= UART_MSR_DCD;
576 data->msr_mask_off |= UART_MSR_DDCD;
581 data->msr_mask_on |= UART_MSR_DSR;
582 data->msr_mask_off |= UART_MSR_DDSR;
587 data->msr_mask_on |= UART_MSR_CTS;
588 data->msr_mask_off |= UART_MSR_DCTS;
593 data->msr_mask_off |= UART_MSR_RI;
594 data->msr_mask_off |= UART_MSR_TERI;
601 data->clk = devm_clk_get_optional(dev, "baudclk");
602 if (data->clk == NULL)
603 data->clk = devm_clk_get_optional(dev, NULL);
604 if (IS_ERR(data->clk))
605 return PTR_ERR(data->clk);
607 INIT_WORK(&data->clk_work, dw8250_clk_work_cb);
608 data->clk_notifier.notifier_call = dw8250_clk_notifier_cb;
610 err = clk_prepare_enable(data->clk);
614 err = devm_add_action_or_reset(dev, dw8250_clk_disable_unprepare, data->clk);
618 if (data->clk)
619 p->uartclk = clk_get_rate(data->clk);
625 data->pclk = devm_clk_get_optional(dev, "apb_pclk");
626 if (IS_ERR(data->pclk))
627 return PTR_ERR(data->pclk);
629 err = clk_prepare_enable(data->pclk);
633 err = devm_add_action_or_reset(dev, dw8250_clk_disable_unprepare, data->pclk);
637 data->rst = devm_reset_control_get_optional_exclusive(dev, NULL);
638 if (IS_ERR(data->rst))
639 return PTR_ERR(data->rst);
641 reset_control_deassert(data->rst);
643 err = devm_add_action_or_reset(dev, dw8250_reset_control_assert, data->rst);
647 dw8250_quirks(p, data);
650 if (data->uart_16550_compatible)
653 if (!data->skip_autocfg)
658 data->data.dma.rxconf.src_maxburst = p->fifosize / 4;
659 data->data.dma.txconf.dst_maxburst = p->fifosize / 4;
660 up->dma = &data->data.dma;
663 data->data.line = serial8250_register_8250_port(up);
664 if (data->data.line < 0)
665 return data->data.line;
672 if (data->clk) {
673 err = clk_notifier_register(data->clk, &data->clk_notifier);
676 queue_work(system_unbound_wq, &data->clk_work);
679 platform_set_drvdata(pdev, data);
689 struct dw8250_data *data = platform_get_drvdata(pdev);
694 if (data->clk) {
695 clk_notifier_unregister(data->clk, &data->clk_notifier);
697 flush_work(&data->clk_work);
700 serial8250_unregister_port(data->data.line);
710 struct dw8250_data *data = dev_get_drvdata(dev);
712 serial8250_suspend_port(data->data.line);
719 struct dw8250_data *data = dev_get_drvdata(dev);
721 serial8250_resume_port(data->data.line);
728 struct dw8250_data *data = dev_get_drvdata(dev);
730 clk_disable_unprepare(data->clk);
732 clk_disable_unprepare(data->pclk);
739 struct dw8250_data *data = dev_get_drvdata(dev);
741 clk_prepare_enable(data->pclk);
743 clk_prepare_enable(data->clk);
779 { .compatible = "snps,dw-apb-uart", .data = &dw8250_dw_apb },
780 { .compatible = "cavium,octeon-3860-uart", .data = &dw8250_octeon_3860_data },
781 { .compatible = "marvell,armada-38x-uart", .data = &dw8250_armada_38x_data },
782 { .compatible = "renesas,rzn1-uart", .data = &dw8250_renesas_rzn1_data },
783 { .compatible = "starfive,jh7100-uart", .data = &dw8250_starfive_jh7100_data },