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;
566 omap = devm_kzalloc(dev, sizeof(*omap), GFP_KERNEL);
567 if (!omap) {
573 omap->uhh_base = devm_ioremap_resource(dev, res);
574 if (IS_ERR(omap->uhh_base))
575 return PTR_ERR(omap->uhh_base);
577 omap->pdata = pdata;
584 platform_set_drvdata(pdev, omap);
587 omap->usbhs_rev = usbhs_read(omap->uhh_base, OMAP_UHH_REVISION);
589 /* we need to call runtime suspend before we update omap->nports
599 omap->nports = pdata->nports;
601 switch (omap->usbhs_rev) {
603 omap->nports = 3;
606 omap->nports = 2;
609 omap->nports = OMAP3_HS_USB_PORTS;
612 omap->usbhs_rev, omap->nports);
615 pdata->nports = omap->nports;
618 i = sizeof(struct clk *) * omap->nports;
619 omap->utmi_clk = devm_kzalloc(dev, i, GFP_KERNEL);
620 omap->hsic480m_clk = devm_kzalloc(dev, i, GFP_KERNEL);
621 omap->hsic60m_clk = devm_kzalloc(dev, i, GFP_KERNEL);
623 if (!omap->utmi_clk || !omap->hsic480m_clk || !omap->hsic60m_clk) {
630 omap->ehci_logic_fck = ERR_PTR(-ENODEV);
631 omap->init_60m_fclk = ERR_PTR(-ENODEV);
632 omap->utmi_p1_gfclk = ERR_PTR(-ENODEV);
633 omap->utmi_p2_gfclk = ERR_PTR(-ENODEV);
634 omap->xclk60mhsp1_ck = ERR_PTR(-ENODEV);
635 omap->xclk60mhsp2_ck = ERR_PTR(-ENODEV);
637 for (i = 0; i < omap->nports; i++) {
638 omap->utmi_clk[i] = ERR_PTR(-ENODEV);
639 omap->hsic480m_clk[i] = ERR_PTR(-ENODEV);
640 omap->hsic60m_clk[i] = ERR_PTR(-ENODEV);
644 if (omap->usbhs_rev == OMAP_USBHS_REV1) {
646 for (i = 0; i < omap->nports; i++) {
655 omap->ehci_logic_fck = devm_clk_get(dev,
657 if (IS_ERR(omap->ehci_logic_fck)) {
658 ret = PTR_ERR(omap->ehci_logic_fck);
668 omap->utmi_p1_gfclk = devm_clk_get(dev, "utmi_p1_gfclk");
669 if (IS_ERR(omap->utmi_p1_gfclk)) {
670 ret = PTR_ERR(omap->utmi_p1_gfclk);
675 omap->utmi_p2_gfclk = devm_clk_get(dev, "utmi_p2_gfclk");
676 if (IS_ERR(omap->utmi_p2_gfclk)) {
677 ret = PTR_ERR(omap->utmi_p2_gfclk);
682 omap->xclk60mhsp1_ck = devm_clk_get(dev, "refclk_60m_ext_p1");
683 if (IS_ERR(omap->xclk60mhsp1_ck)) {
684 ret = PTR_ERR(omap->xclk60mhsp1_ck);
689 omap->xclk60mhsp2_ck = devm_clk_get(dev, "refclk_60m_ext_p2");
690 if (IS_ERR(omap->xclk60mhsp2_ck)) {
691 ret = PTR_ERR(omap->xclk60mhsp2_ck);
696 omap->init_60m_fclk = devm_clk_get(dev, "refclk_60m_int");
697 if (IS_ERR(omap->init_60m_fclk)) {
698 ret = PTR_ERR(omap->init_60m_fclk);
703 for (i = 0; i < omap->nports; i++) {
714 omap->utmi_clk[i] = devm_clk_get(dev, clkname);
715 if (IS_ERR(omap->utmi_clk[i])) {
716 ret = PTR_ERR(omap->utmi_clk[i]);
724 omap->hsic480m_clk[i] = devm_clk_get(dev, clkname);
725 if (IS_ERR(omap->hsic480m_clk[i])) {
726 ret = PTR_ERR(omap->hsic480m_clk[i]);
734 omap->hsic60m_clk[i] = devm_clk_get(dev, clkname);
735 if (IS_ERR(omap->hsic60m_clk[i])) {
736 ret = PTR_ERR(omap->hsic60m_clk[i]);
744 ret = clk_set_parent(omap->utmi_p1_gfclk,
745 omap->xclk60mhsp1_ck);
752 ret = clk_set_parent(omap->utmi_p1_gfclk,
753 omap->init_60m_fclk);
762 ret = clk_set_parent(omap->utmi_p2_gfclk,
763 omap->xclk60mhsp2_ck);
770 ret = clk_set_parent(omap->utmi_p2_gfclk,
771 omap->init_60m_fclk);
857 MODULE_DESCRIPTION("usb host common core driver for omap EHCI and OHCI");
867 * the omap ehci and ohci probe functions are called.