mpc5200 psc3怎样用作usb?

发布于 2022-09-23 14:49:25 字数 4351 浏览 13 评论 0

psc3可复用为usb,  所以GPIO的配置寄存器里面肯定需要将它配置为usb口。 然后它还需要有一个独立的驱动程序么, 还是说利用现有的usb控制器驱动程序, 在kernel中改改什么地方就好了。 mpc5200的data sheet中并没有特别的说明psc3用作usb是具体需要配置什么。

在平台设备结构体数组中 struct platform_device ppc_sys_platform_devices[],
psc3的部分我改成如下形式
[MPC52xx_PSC3] = {
                .name                = "ppc-soc-ohci",
                .id                = 1,
                .num_resources        = 2,
                .dev.dma_mask        = &mpc52xx_dma_mask,
                .dev.coherent_dma_mask = 0xffffffffULL,
                .resource        = (struct resource[]) {
                        {
                                .start        = 0x2400,
                                .end        = 0x249f,
                                .flags        = IORESOURCE_MEM,
                        },
                        {
                                .start        = MPC52xx_PSC3_IRQ,
                                .end        = MPC52xx_PSC3_IRQ,
                                .flags        = IORESOURCE_IRQ,
                        },
                },
        },

原先.name 对应的驱动名称是 mpc52xx-psc, 只有uart模式的驱动。 现在我把它改成和cpu的primary usb 接口一样的驱动, 这样编译后, 提示信息为:
new USB bus registered, assigned bus number 2
irq 42, io mem 0xf0002400
init err (fa000000 0000)
can't start PPC-SOC USB
startup error -75
USB bus 2 deregistered
failed with error -75

对usb驱动程序进行跟踪, 在ohci-hcd.c 文件中的一下代码中出现了init err提示, 错误产生的原因可能是什么呢?
        if ((ohci_readl (ohci, &ohci->regs->fminterval) & 0x3fff0000) == 0
                        || !ohci_readl (ohci, &ohci->regs->periodicstart)) {
                if (!(ohci->flags & OHCI_QUIRK_INITRESET)) {
                        ohci->flags |= OHCI_QUIRK_INITRESET;
                        ohci_dbg (ohci, "enabling initreset quirk\n");
                        goto retry;
                }
                spin_unlock_irq (&ohci->lock);
                ohci_err (ohci, "init err (%08x %04x)\n",
                        ohci_readl (ohci, &ohci->regs->fminterval),
                        ohci_readl (ohci, &ohci->regs->periodicstart));
                return -EOVERFLOW;
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

败给现实 2022-09-30 14:49:25

原帖由 oatmeal3000 于 2009-2-2 16:46 发表
psc3可复用为usb,  所以GPIO的配置寄存器里面肯定需要将它配置为usb口。 然后它还需要有一个独立的驱动程序么, 还是说利用现有的usb控制器驱动程序, 在kernel中改改什么地方就好了。 mpc5200的data sheet中并 ...

psc3可复用为usb

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文