Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Aug 2012 16:18:44 +0000
From:      aleek@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r240534 - soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl
Message-ID:  <20120819161844.02D36106564A@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: aleek
Date: Sun Aug 19 16:18:43 2012
New Revision: 240534
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=240534

Log:
  created separate function for modyfing LED pin status

Modified:
  soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.c
  soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.h

Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.c	Sun Aug 19 14:48:33 2012	(r240533)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.c	Sun Aug 19 16:18:43 2012	(r240534)
@@ -3,6 +3,10 @@
  *	Ben Gray <ben.r.gray@gmail.com>.
  * All rights reserved.
  *
+ * Copyright (c) 2012
+ *	Aleksander Dutkowski <aleek@FreeBSD.org>.
+ * All rights reserved.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -815,6 +819,41 @@
 }
 
 /**
+ * twl_vreg_led_set - enables or disabled LEDs
+ *	@sc: device soft context
+ *	@leden: LEDEN register mask
+ *
+ *	To enable led use simple mask TWL4030_LEDEN_LEDnON,
+ *	to disable ~TWL4030_LEDEN_LEDnON 
+ *
+ *	LOCKING:
+ *	The TWL_VEG exclusive lock must be held while this function is called.
+ *
+ *	RETURNS:
+ *	Zero on success otherwise EINVAL.
+ * */
+static int
+twl_vreg_led_set( struct twl_vreg_softc *sc, uint8_t led )
+{
+	uint8_t val;
+
+	if( twl_read( sc->sc_pdev, 2, TWL4030_LEDEN, &val, 1 ) != 0 )
+	{
+		device_printf( sc->sc_dev, "Could not read LEDEN register\n" );
+		return EINVAL;
+	}
+
+	val &= led;
+	
+	if( twl_write( sc->sc_pdev, 2, TWL4030_LEDEN, &val, 1 ) != 0 )
+	{
+		device_printf( sc->sc_dev, "Could not write LEDEN register\n" );
+		return EINVAL;
+	}
+	return 0;
+}
+
+/**
  *	twl_add_regulator - adds single voltage regulator sysctls for the device
  *	@sc: device soft context
  *	@name: the name of the regulator
@@ -897,8 +936,11 @@
 	int len = 0, prop_len;
 	uint8_t val;
 
-	/* Enable writing to power configuration registers */
 	if (twl_is_4030(sc->sc_pdev)) {
+		/* Enable writing to power configuration registers
+		 * by writing proper values to PROTECT_KEY register
+		 */
+		
 		val = 0xC0;
 		if( twl_write( sc->sc_pdev, 3, 0x44, &val, 1 ) != 0 )
 		{
@@ -931,19 +973,11 @@
 			return 0;
 		}
 
-		if( twl_read( sc->sc_pdev, 2, 0xEE, &val, 1 ) != 0 )
-		{
-			device_printf( sc->sc_dev, "Could not read LEDA register\n" );
-			return 0;
-		}
-		val &= ~0x03;
-		if( twl_write( sc->sc_pdev, 2, 0xEE, &val, 1 ) != 0 )
-		{
-			device_printf( sc->sc_dev, "Could not write LEDA register\n" );
-			return 0;
-		}
-
-
+		// if we have BeagleBoard-xM, we need to repower HUB
+		val = ~(TWL4030_LEDEN_LEDAON || TWL4030_LEDEN_LEDBON);
+		twl_vreg_led_set( sc, val );
+		val = (TWL4030_LEDEN_LEDAON || TWL4030_LEDEN_LEDBON);
+		twl_vreg_led_set( sc, val );
 	}
 
 

Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.h
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.h	Sun Aug 19 14:48:33 2012	(r240533)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/twl/twl_vreg.h	Sun Aug 19 16:18:43 2012	(r240534)
@@ -3,6 +3,10 @@
  *	Ben Gray <ben.r.gray@gmail.com>.
  * All rights reserved.
  *
+ * Copyright (c) 2012
+ *	Aleksander Dutkowski <aleek@FreeBSD.org>.
+ * All rights reserved.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -31,4 +35,13 @@
 int twl_vreg_get_voltage(device_t dev, const char *name, int *millivolts);
 int twl_vreg_set_voltage(device_t dev, const char *name, int millivolts);
 
+#define TWL4030_LEDEN				0xEE
+#define 	TWL4030_LEDEN_LEDAON	0x01
+#define 	TWL4030_LEDEN_LEDBON	0x02
+
+#define TWL4030_PROTECT_KEY			0x44
+#define TWL4030_PROTECT_KEY_1		0xC0
+#define TWL4030_PROTECT_KEY_2		0x0C
+
+
 #endif /* _TWL_VREG_H_ */



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