Module Name: src Committed By: christos Date: Thu Apr 12 21:14:53 UTC 2018
Modified Files: src/sys/dev/i2c: xc5k.c Log Message: PR/53177: David Binderman: Better error handling To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/dev/i2c/xc5k.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/i2c/xc5k.c diff -u src/sys/dev/i2c/xc5k.c:1.7 src/sys/dev/i2c/xc5k.c:1.8 --- src/sys/dev/i2c/xc5k.c:1.7 Wed May 31 22:45:10 2017 +++ src/sys/dev/i2c/xc5k.c Thu Apr 12 17:14:53 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: xc5k.c,v 1.7 2017/06/01 02:45:10 chs Exp $ */ +/* $NetBSD: xc5k.c,v 1.8 2018/04/12 21:14:53 christos Exp $ */ /*- * Copyright (c) 2010 Jared D. McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xc5k.c,v 1.7 2017/06/01 02:45:10 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xc5k.c,v 1.8 2018/04/12 21:14:53 christos Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -158,20 +158,27 @@ xc5k_firmware_open(struct xc5k *xc) aprint_normal_dev(xc->parent, "xc5k: loading firmware '%s/%s'\n", XC5K_FIRMWARE_DRVNAME, XC5K_FIRMWARE_IMGNAME); + error = xc5k_firmware_upload(xc, fw, fwlen); - if (!error) { - xc5k_read_2(xc, XC5K_REG_VERSION, &xcversion); - xc5k_read_2(xc, XC5K_REG_BUILD, &xcbuild); - if (!error) - aprint_normal_dev(xc->parent, - "xc5k: hw %d.%d, fw %d.%d.%d\n", - (xcversion >> 12) & 0xf, - (xcversion >> 8) & 0xf, - (xcversion >> 4) & 0xf, - xcversion & 0xf, - xcbuild); + if (error) + goto done; + + error = xc5k_read_2(xc, XC5K_REG_VERSION, &xcversion); + if (error) { + error = 0; + goto done; + } + + error = xc5k_read_2(xc, XC5K_REG_BUILD, &xcbuild); + if (error) { + error = 0; + xcbuild = 0; } + aprint_normal_dev(xc->parent, "xc5k: hw %d.%d, fw %d.%d.%d\n", + (xcversion >> 12) & 0xf, (xcversion >> 8) & 0xf, + (xcversion >> 4) & 0xf, xcversion & 0xf, xcbuild); + done: if (fw) firmware_free(fw, fwlen);