Index: kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c
===================================================================
--- kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c	(revision 08d059a2c3dc340977882e9ff3ef6ec011a4e9c9)
+++ kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c	(revision 09a0a8f0999e95475a4a5baea3f5192fb662f4db)
@@ -101,9 +101,4 @@
 	amdm37x_irc_init(beagleboard.irc_addr);
 
-	// TODO find a nicer way to setup 32kHz clock source for timer1
-	ioport32_t *clksel = (void*) km_map(0x48004C40, 4, PAGE_NOT_CACHEABLE);
-	*clksel &= ~1;
-	km_unmap((uintptr_t)clksel, 4);
-
 	/* Initialize timer, pick timer1, because it is in always-power domain
 	 * and has special capabilities for regular ticks */
Index: kernel/genarch/include/drivers/amdm37x_gpt/amdm37x_gpt.h
===================================================================
--- kernel/genarch/include/drivers/amdm37x_gpt/amdm37x_gpt.h	(revision 08d059a2c3dc340977882e9ff3ef6ec011a4e9c9)
+++ kernel/genarch/include/drivers/amdm37x_gpt/amdm37x_gpt.h	(revision 09a0a8f0999e95475a4a5baea3f5192fb662f4db)
@@ -198,4 +198,11 @@
     amdm37x_gpt_t* timer, uintptr_t ioregs, size_t iosize, unsigned hz)
 {
+	/* Set 32768 Hz clock as source */
+	// TODO find a nicer way to setup 32kHz clock source for timer1
+	// reg 0x48004C40 is CM_CLKSEL_WKUP see page 485 of the manual
+	ioport32_t *clksel = (void*) km_map(0x48004C40, 4, PAGE_NOT_CACHEABLE);
+	*clksel &= ~1;
+	km_unmap((uintptr_t)clksel, 4);
+
 	ASSERT(timer);
 	/* Map control register */
@@ -213,4 +220,5 @@
 	if (timer->special_available) {
 		/* Set values for according to formula (manual p. 2733) */
+		/* Use temporary variables for easier debugging */
 		const uint32_t tpir =
 		    ((32768 / hz + 1) * 1000000) - (32768000L * (1000 / hz));
