Lines Matching defs:omap

3  * omap-usb-host.c - The USBHS core driver for OMAP EHCI & OHCI
18 #include <linux/platform_data/usb-omap.h>
24 #include "omap-usb.h"
27 #define OMAP_EHCI_DEVICE "ehci-omap"
124 * Map 'enum usbhs_omap_port_mode' found in <linux/platform_data/usb-omap.h>
126 * 'Documentation/devicetree/bindings/mfd/omap-usb-host.txt'
280 struct usbhs_hcd_omap *omap = dev_get_drvdata(dev);
281 struct usbhs_omap_platform_data *pdata = omap->pdata;
288 if (!IS_ERR(omap->ehci_logic_fck))
289 clk_prepare_enable(omap->ehci_logic_fck);
291 for (i = 0; i < omap->nports; i++) {
294 if (!IS_ERR(omap->hsic60m_clk[i])) {
295 r = clk_prepare_enable(omap->hsic60m_clk[i]);
303 if (!IS_ERR(omap->hsic480m_clk[i])) {
304 r = clk_prepare_enable(omap->hsic480m_clk[i]);
314 if (!IS_ERR(omap->utmi_clk[i])) {
315 r = clk_prepare_enable(omap->utmi_clk[i]);
333 struct usbhs_hcd_omap *omap = dev_get_drvdata(dev);
334 struct usbhs_omap_platform_data *pdata = omap->pdata;
339 for (i = 0; i < omap->nports; i++) {
342 if (!IS_ERR(omap->hsic60m_clk[i]))
343 clk_disable_unprepare(omap->hsic60m_clk[i]);
345 if (!IS_ERR(omap->hsic480m_clk[i]))
346 clk_disable_unprepare(omap->hsic480m_clk[i]);
350 if (!IS_ERR(omap->utmi_clk[i]))
351 clk_disable_unprepare(omap->utmi_clk[i]);
358 if (!IS_ERR(omap->ehci_logic_fck))
359 clk_disable_unprepare(omap->ehci_logic_fck);
366 static unsigned omap_usbhs_rev1_hostconfig(struct usbhs_hcd_omap *omap,
369 struct usbhs_omap_platform_data *pdata = omap->pdata;
372 for (i = 0; i < omap->nports; i++) {
404 for (i = 0; i < omap->nports; i++) {
415 static unsigned omap_usbhs_rev2_hostconfig(struct usbhs_hcd_omap *omap,
418 struct usbhs_omap_platform_data *pdata = omap->pdata;
421 for (i = 0; i < omap->nports; i++) {
437 struct usbhs_hcd_omap *omap = dev_get_drvdata(dev);
444 reg = usbhs_read(omap->uhh_base, OMAP_UHH_HOSTCONFIG);
452 switch (omap->usbhs_rev) {
454 reg = omap_usbhs_rev1_hostconfig(omap, reg);
458 reg = omap_usbhs_rev2_hostconfig(omap, reg);
462 reg = omap_usbhs_rev2_hostconfig(omap, reg);
466 usbhs_write(omap->uhh_base, OMAP_UHH_HOSTCONFIG, reg);
520 { .compatible = "ti,ehci-omap", },
536 struct usbhs_hcd_omap *omap;
565 omap = devm_kzalloc(dev, sizeof(*omap), GFP_KERNEL);
566 if (!omap) {
571 omap->uhh_base = devm_platform_ioremap_resource(pdev, 0);
572 if (IS_ERR(omap->uhh_base))
573 return PTR_ERR(omap->uhh_base);
575 omap->pdata = pdata;
582 platform_set_drvdata(pdev, omap);
585 omap->usbhs_rev = usbhs_read(omap->uhh_base, OMAP_UHH_REVISION);
587 /* we need to call runtime suspend before we update omap->nports
597 omap->nports = pdata->nports;
599 switch (omap->usbhs_rev) {
601 omap->nports = 3;
604 omap->nports = 2;
607 omap->nports = OMAP3_HS_USB_PORTS;
610 omap->usbhs_rev, omap->nports);
613 pdata->nports = omap->nports;
616 i = sizeof(struct clk *) * omap->nports;
617 omap->utmi_clk = devm_kzalloc(dev, i, GFP_KERNEL);
618 omap->hsic480m_clk = devm_kzalloc(dev, i, GFP_KERNEL);
619 omap->hsic60m_clk = devm_kzalloc(dev, i, GFP_KERNEL);
621 if (!omap->utmi_clk || !omap->hsic480m_clk || !omap->hsic60m_clk) {
628 omap->ehci_logic_fck = ERR_PTR(-ENODEV);
629 omap->init_60m_fclk = ERR_PTR(-ENODEV);
630 omap->utmi_p1_gfclk = ERR_PTR(-ENODEV);
631 omap->utmi_p2_gfclk = ERR_PTR(-ENODEV);
632 omap->xclk60mhsp1_ck = ERR_PTR(-ENODEV);
633 omap->xclk60mhsp2_ck = ERR_PTR(-ENODEV);
635 for (i = 0; i < omap->nports; i++) {
636 omap->utmi_clk[i] = ERR_PTR(-ENODEV);
637 omap->hsic480m_clk[i] = ERR_PTR(-ENODEV);
638 omap->hsic60m_clk[i] = ERR_PTR(-ENODEV);
642 if (omap->usbhs_rev == OMAP_USBHS_REV1) {
644 for (i = 0; i < omap->nports; i++) {
653 omap->ehci_logic_fck = devm_clk_get(dev,
655 if (IS_ERR(omap->ehci_logic_fck)) {
656 ret = PTR_ERR(omap->ehci_logic_fck);
666 omap->utmi_p1_gfclk = devm_clk_get(dev, "utmi_p1_gfclk");
667 if (IS_ERR(omap->utmi_p1_gfclk)) {
668 ret = PTR_ERR(omap->utmi_p1_gfclk);
673 omap->utmi_p2_gfclk = devm_clk_get(dev, "utmi_p2_gfclk");
674 if (IS_ERR(omap->utmi_p2_gfclk)) {
675 ret = PTR_ERR(omap->utmi_p2_gfclk);
680 omap->xclk60mhsp1_ck = devm_clk_get(dev, "refclk_60m_ext_p1");
681 if (IS_ERR(omap->xclk60mhsp1_ck)) {
682 ret = PTR_ERR(omap->xclk60mhsp1_ck);
687 omap->xclk60mhsp2_ck = devm_clk_get(dev, "refclk_60m_ext_p2");
688 if (IS_ERR(omap->xclk60mhsp2_ck)) {
689 ret = PTR_ERR(omap->xclk60mhsp2_ck);
694 omap->init_60m_fclk = devm_clk_get(dev, "refclk_60m_int");
695 if (IS_ERR(omap->init_60m_fclk)) {
696 ret = PTR_ERR(omap->init_60m_fclk);
701 for (i = 0; i < omap->nports; i++) {
712 omap->utmi_clk[i] = devm_clk_get(dev, clkname);
713 if (IS_ERR(omap->utmi_clk[i])) {
714 ret = PTR_ERR(omap->utmi_clk[i]);
722 omap->hsic480m_clk[i] = devm_clk_get(dev, clkname);
723 if (IS_ERR(omap->hsic480m_clk[i])) {
724 ret = PTR_ERR(omap->hsic480m_clk[i]);
732 omap->hsic60m_clk[i] = devm_clk_get(dev, clkname);
733 if (IS_ERR(omap->hsic60m_clk[i])) {
734 ret = PTR_ERR(omap->hsic60m_clk[i]);
742 ret = clk_set_parent(omap->utmi_p1_gfclk,
743 omap->xclk60mhsp1_ck);
750 ret = clk_set_parent(omap->utmi_p1_gfclk,
751 omap->init_60m_fclk);
760 ret = clk_set_parent(omap->utmi_p2_gfclk,
761 omap->xclk60mhsp2_ck);
768 ret = clk_set_parent(omap->utmi_p2_gfclk,
769 omap->init_60m_fclk);
854 MODULE_DESCRIPTION("usb host common core driver for omap EHCI and OHCI");
864 * the omap ehci and ohci probe functions are called.