USB: otg/ulpi: bail out on read errors

otg_read may return errnos, so bail out correctly to prevent bogus
ID-numbers.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Daniel Mack <daniel@caiaq.de>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Wolfram Sang 2010-06-15 12:34:22 +02:00 committed by Greg Kroah-Hartman
parent 2bb14cbf04
commit 7b4a036722

View File

@ -59,12 +59,17 @@ static int ulpi_set_flags(struct otg_transceiver *otg)
static int ulpi_init(struct otg_transceiver *otg) static int ulpi_init(struct otg_transceiver *otg)
{ {
int i, vid, pid; int i, vid, pid, ret;
u32 ulpi_id = 0;
vid = (otg_io_read(otg, ULPI_VENDOR_ID_HIGH) << 8) | for (i = 0; i < 4; i++) {
otg_io_read(otg, ULPI_VENDOR_ID_LOW); ret = otg_io_read(otg, ULPI_PRODUCT_ID_HIGH - i);
pid = (otg_io_read(otg, ULPI_PRODUCT_ID_HIGH) << 8) | if (ret < 0)
otg_io_read(otg, ULPI_PRODUCT_ID_LOW); return ret;
ulpi_id = (ulpi_id << 8) | ret;
}
vid = ulpi_id & 0xffff;
pid = ulpi_id >> 16;
pr_info("ULPI transceiver vendor/product ID 0x%04x/0x%04x\n", vid, pid); pr_info("ULPI transceiver vendor/product ID 0x%04x/0x%04x\n", vid, pid);