- 论坛徽章:
- 0
|
一种方法是在uboot中改,也可以在加载驱动时加一下,
我把ret = platform_add_devices(s3c2440_devices, 1);中的usb加载,没有放在启动,而是用insmod加载
加载时初始化upll
static u64 samsung_device_dma_mask = DMA_BIT_MASK(32);
static struct resource s3c_usb_resource[] = {
[0] = DEFINE_RES_MEM(S3C_PA_USBHOST, SZ_256),
[1] = DEFINE_RES_IRQ(IRQ_USBH),
};
struct platform_device s3c_device_ohci = {
.name = "s3c2440-ohci",
.id = -1,
.num_resources = ARRAY_SIZE(s3c_usb_resource),
.resource = s3c_usb_resource,
.dev = {
.dma_mask = &samsung_device_dma_mask,
.coherent_dma_mask = DMA_BIT_MASK(32),
}
};
static struct platform_device *s3c2440_devices[] __initdata =
{
&s3c_device_ohci,
};
static void usb_s3c2440_init_pll(void)
{
u32 upll_value;
upll_value = ((0x38 << 12) | (0x02 << 4) | (0x02 << 0));
do {
printk(KERN_INFO "UPLLCON = %x, wxl add\n", upll_value);
writel(upll_value, S3C2410_UPLLCON);
mdelay(1);
}while(upll_value != readl(S3C2410_UPLLCON));
}
static int __init s3c2440_usb_init(void)
int ret;
usb_s3c2440_init_pll();
ret = platform_add_devices(s3c2440_devices, 1);
return ret;
}
static void __exit s3c2440_usb_exit(void)
{
//platform_device_put(&s3c2440_uart_device);
}
MODULE_LICENSE("GPL");
module_init(s3c2440_usb_init);
module_exit(s3c2440_usb_exit);
|
|