Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Feb 2016 11:03:22 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r295654 - head/sys/arm/allwinner
Message-ID:  <201602161103.u1GB3MpW066241@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Tue Feb 16 11:03:21 2016
New Revision: 295654
URL: https://svnweb.freebsd.org/changeset/base/295654

Log:
  Only read the power state register when we will be using its value. While
  here remove magic shifts, and cleanup pwr_name.
  
  Sponsored by:	ABT Systems Ltd

Modified:
  head/sys/arm/allwinner/axp209.c

Modified: head/sys/arm/allwinner/axp209.c
==============================================================================
--- head/sys/arm/allwinner/axp209.c	Tue Feb 16 10:33:45 2016	(r295653)
+++ head/sys/arm/allwinner/axp209.c	Tue Feb 16 11:03:21 2016	(r295654)
@@ -54,7 +54,9 @@ __FBSDID("$FreeBSD$");
 /* Power State Register */
 #define	AXP209_PSR		0x00
 #define	AXP209_PSR_ACIN		0x80
+#define	AXP209_PSR_ACIN_SHIFT	7
 #define	AXP209_PSR_VBUS		0x20
+#define	AXP209_PSR_VBUS_SHIFT	5
 
 /* Shutdown and battery control */
 #define	AXP209_SHUTBAT		0x32
@@ -136,26 +138,27 @@ static int
 axp209_attach(device_t dev)
 {
 	struct axp209_softc *sc;
+	const char *pwr_name[] = {"Battery", "AC", "USB", "AC and USB"};
 	uint8_t data;
 	uint8_t pwr_src;
-	char pwr_name[4][11] = {"Battery", "AC", "USB", "AC and USB"};
 
 	sc = device_get_softc(dev);
 
 	sc->addr = iicbus_get_addr(dev);
 
-	/*
-	 * Read the Power State register
-	 * bit 7 is AC presence, bit 5 is VBUS presence.
-	 * If none are set then we are running from battery (obviously).
-	 */
-	axp209_read(dev, AXP209_PSR, &data, 1);
-	pwr_src = ((data & AXP209_PSR_ACIN) >> 7) |
-		  ((data & AXP209_PSR_VBUS) >> 4);
+	if (bootverbose) {
+		/*
+		 * Read the Power State register.
+		 * Shift the AC presence into bit 0.
+		 * Shift the Battery presence into bit 1.
+		 */
+		axp209_read(dev, AXP209_PSR, &data, 1);
+		pwr_src = ((data & AXP209_PSR_ACIN) >> AXP209_PSR_ACIN_SHIFT) |
+		    ((data & AXP209_PSR_VBUS) >> (AXP209_PSR_VBUS_SHIFT - 1));
 
-	if (bootverbose)
 		device_printf(dev, "AXP209 Powered by %s\n",
 		    pwr_name[pwr_src]);
+	}
 
 	EVENTHANDLER_REGISTER(shutdown_final, axp209_shutdown, dev,
 	    SHUTDOWN_PRI_LAST);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201602161103.u1GB3MpW066241>