usb 1-1: device descriptor read/64, error -62

usb 드라이브를 배울 때 겪는 문제:
usb 1-1: new full speed USB device using s3c2410-ohci and address 2
usb 1-1: device descriptor read/64, error -62
usb 1-1: device descriptor read/64, error -62
usb 1-1: new full speed USB device using s3c2410-ohci and address 3
usb 1-1: device descriptor read/64, error -62
usb 1-1: device descriptor read/64, error -62
usb 1-1: new full speed USB device using s3c2410-ohci and address 4
usb 1-1: device not accepting address 4, error -62
usb 1-1: new full speed USB device using s3c2410-ohci and address 5
usb 1-1: device not accepting address 5, error -62
hub 1-0:1.0: unable to enumerate USB device on port 1

검색을 통해 UPLLCON이 설정되지 않은 것으로 나타났습니다.근본적인 문제는 uboot에 있다.하지만 내핵을 수정해 보완할 수 있다.
드라이버/usb/host/ohci-s3c2410.c의 함수 s3c2410_start_hc 수정은 다음과 같습니다.
drivers/usb/host/ohci-s3c2410.c

static void s3c2410_start_hc(struct platform_device *dev, struct usb_hcd *hcd)
{
	struct s3c2410_hcd_info *info = dev->dev.platform_data;

	unsigned long upllvalue  = (0x38<< 12) | (0x02 << 4) | (0x01); //  
	unsigned long upllvalue1 = (0x38<< 12) | (0x02 << 4) | (0x02); //  

	dev_dbg(&dev->dev, "s3c2410_start_hc:
"); __raw_writel(upllvalue, S3C2410_UPLLCON); // mdelay(20); // __raw_writel(upllvalue1, S3C2410_UPLLCON);// mdelay(20); // clk_enable(usb_clk); mdelay(2); /* let the bus clock stabilise */ clk_enable(clk); if (info != NULL) { info->hcd = hcd; info->report_oc = s3c2410_hcd_oc; if (info->enable_oc != NULL) { (info->enable_oc)(info, 1); } } }

커널을 다시 컴파일하고 uboot에서 새 커널로 시작하면 됩니다.
#nfs 30000000 192.168.1.131:/nfs/busybox/fs_mini2440/uImage_XXX 
#bootm 30000000
참조:http://download.csdn.net/detail/wenxiaohua_113/4313893#comment

좋은 웹페이지 즐겨찾기