usb: asix: Move software resets to basic_init

The ASIX driver calls a basic_init() function during get_info(), so that
not all initialization tasks need to be redone on every init().
Unfortunately, the most important one is still triggered too often: the
driver does a full port and MII reset on every asix_init(), requiring up
to several seconds to reestablish the link.

This patch confines that software reset into the asix_basic_init()
function so that it will only be executed once. This saves about a
second of boot time on systems using BOOTP.

Original-Change-Id: I044e6d12f6c175a87ee3c93bf874b497f9379c3e
BUG=chromium-os:14082
TEST=run U-boot; usb start; bootp; bootp
See that second bootp happens quickly and link stays up.
Reviewed-on: http://gerrit.chromium.org/gerrit/200
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
(cherry picked from commit 155054179112cbace0247ff63a8bd0e0386c8f6b)

This is my attempt to rebase our CL:200 onto the upstream commit
5fae53d0, which looks like they had tried something similar but did not
take it far enough. We should try upstreaming this when there are no
objections to my approach (it seems to work in my tests, at least).

Change-Id: I0d869016f9336fd59fab3b2aa5785697cf732ef8
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/45656
Commit-Queue: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
1 file changed