svn commit: r312859 - head/sys/arm/ti/am335x

Ian Lepore ian at FreeBSD.org
Fri Jan 27 04:08:25 UTC 2017


Author: ian
Date: Fri Jan 27 04:08:24 2017
New Revision: 312859
URL: https://svnweb.freebsd.org/changeset/base/312859

Log:
  Configure the timer capture pin to input mode in the timer control
  register, in addition to configuring it as input with the pinmux driver.
  
  There was a control register bit commented as "no desc in datasheet".  A
  later revision of the manual reveals the bit to be an input/output control
  for the timer pin.  In addition to configuring capture or pulse mode, you
  apparently have to separately configure the pin direction in the timer
  control register.
  
  Before this change, the timer block was apparently driving a signal onto a
  pad configured by pinmux as input.  Capture mode still accidentally worked
  for me during testing because I was using a very strong signal source that
  just out-muscled the weaker drive from the misconfigured pin.

Modified:
  head/sys/arm/ti/am335x/am335x_dmtpps.c
  head/sys/arm/ti/am335x/am335x_dmtreg.h

Modified: head/sys/arm/ti/am335x/am335x_dmtpps.c
==============================================================================
--- head/sys/arm/ti/am335x/am335x_dmtpps.c	Fri Jan 27 03:44:50 2017	(r312858)
+++ head/sys/arm/ti/am335x/am335x_dmtpps.c	Fri Jan 27 04:08:24 2017	(r312859)
@@ -463,6 +463,14 @@ dmtpps_attach(device_t dev)
 	sc->tmr_num = ti_hwmods_get_unit(dev, "timer");
 	snprintf(sc->tmr_name, sizeof(sc->tmr_name), "DMTimer%d", sc->tmr_num);
 
+	/*
+	 * Configure the timer pulse/capture pin to input/capture mode.  This is
+	 * required in addition to configuring the pin as input with the pinmux
+	 * controller (which was done via fdt data or tunable at probe time).
+	 */
+	sc->tclr = DMT_TCLR_GPO_CFG;
+	DMTIMER_WRITE4(sc, DMT_TCLR, sc->tclr);
+
 	/* Set up timecounter hardware, start it. */
 	DMTIMER_WRITE4(sc, DMT_TSICR, DMT_TSICR_RESET);
 	while (DMTIMER_READ4(sc, DMT_TIOCP_CFG) & DMT_TIOCP_RESET)

Modified: head/sys/arm/ti/am335x/am335x_dmtreg.h
==============================================================================
--- head/sys/arm/ti/am335x/am335x_dmtreg.h	Fri Jan 27 03:44:50 2017	(r312858)
+++ head/sys/arm/ti/am335x/am335x_dmtreg.h	Fri Jan 27 04:08:24 2017	(r312859)
@@ -62,7 +62,7 @@
 #define	  DMT_TCLR_TRGMODE_BOTH	  (2 << 10)	/* Trigger on match + ovflow */
 #define	  DMT_TCLR_PWM_PTOGGLE	  (1 << 12)	/* PWM toggles */
 #define	  DMT_TCLR_CAP_MODE_2ND	  (1 << 13)	/* Capture second event mode */
-#define	  DMT_TCLR_GPO_CFG	  (1 << 14)	/* (no descr in datasheet) */
+#define	  DMT_TCLR_GPO_CFG	  (1 << 14)	/* Tmr pin conf, 0=out, 1=in */
 #define	DMT_TCRR		0x3C		/* Counter Register */
 #define	DMT_TLDR		0x40		/* Load Reg */
 #define	DMT_TTGR		0x44		/* Trigger Reg */


More information about the svn-src-all mailing list