hi,
i am developing firmware for OMAP 5912 USB device controller on OSK5912 board. i am finding difficulty with writing the OMAP USB device endpoint configuration register (register 0x20 to 0x3F). Following is my flow of initialization before writing the configuration registers.
1- Configure the top level pin multiplexing for USB port 0 and integrator tranciever. 2- Enable USB clock from clock_ctrl_reg and soft_req_reg. 3- Assert soft reset from otg_syscon_1 register. 4- Enable clock from otg_syscon_1 (dev_idle_enable) 5-Configure tranceiver mode and hmc_mode etc in otg_syscon_2. 6- Assert bsessvld bit manually, not connected to gpio 7- disable all interrupts and clear syscon1 register in device controller. 8- Configure endpoints using configuration register at this point. 9- Enable fields in syscon1 (pull-up, cfg_lock etc) 10- Enable interrupts.When i connect it to PC, endpoint 0 operation works fine and device is enumerated without any problem. but data endpoints dont work. device timeouts any transactions on them.
When i single stepped the endpoint configuration routine. i observed following things.
1- When i clear the EP0 configuration register, all configuration register cleard. 2- When i write 1 to EP0 register (used maxp 8 and pointer to start), 1 was written to all registers. 3- When i clear other register EP1, EP2 etc register, it had not effect. 4- When i write the proper value to EP1 and other configuration registers, lower 15 bit (14:0) remains unchanged at 1. but bit 15 is set. which is not desired configuration. this behavior persists for all registers.Kindly some help to solve this problem. let me know, if i am missing something or doing the intialization with wrong sequence.
i will be thankful
regards, Amir