
APPENDIX
S3C9654/C9658/P9658
19-10
RESPONDING BEFORE RESET SIGNAL.
Application:
KS86P/C6504, KS86P/C6408, KS86P/C6308
Problem:
Samsung USB controller respond to host before reset signal.
Solution:
Basically Samsung USB controller respond to host before reset signal. This violation can be
solved by heuristic method which considering transceiver characteristic. Above Samsung USB
controller can support PS2/USB application. Samsung USB controller share D+/PS_CLK,
D-/PS_DATA pins and can change the port mode. So, before USB reset signal we can use these
pins as PS2 input (with pullup in D- pin) mode. And after receive the USB reset signal MCU can
change these pins mode to normal USB D+, D-.
MCU can read these pins using PS2 input mode. And USB reset signal length is at least 10 ms.
MCU can figure it out whether reset or not.
Usage:
initialization code;
ld usbsel, #00h; Set port mode as a PS2 mode.
ld P2CONINT, #10h; <= KS86P/C6504 case
; Set D+ as schmitt trigger input.
; Set D- as schmitt trigger input with pull-up.
; This means USB connection established.
loop1
ld R0, P2; Read port data.
cp R0, #00h; Check port data.
jp nz, loop1 ; If the port data is not zero then go to loop1.
; This loop wait until receive the reset signal.
ld R1, #03h ; Check three iteration for robustness.
; The length of USB signal is from 2.5 us to 10 ms,
; so 2,3,4 or 5 times checking is enough.
loop2
ld R0, P2;
cp R0, #00h;
jp nz, loop1; If the SE0 is too short then this signal is not USB reset
signal, so return to loop1.
dec R1;
cp R1, #00h;
jp nz, loop2;
ld usbsel, #01h; Change from PS2 mode to USB mode.
do normal operation ;
NOTE: If MCU set transceiver as PS2 mode then the input signal does not go through to USB module,
so USB module does not respond to host.