svn commit: r188771 - head/sys/dev/ath/ath_hal

Sam Leffler sam at FreeBSD.org
Wed Feb 18 20:15:15 PST 2009


Author: sam
Date: Thu Feb 19 04:15:14 2009
New Revision: 188771
URL: http://svn.freebsd.org/changeset/base/188771

Log:
  add HAL_DIAG_SETREGS to write registers via the diag api

Modified:
  head/sys/dev/ath/ath_hal/ah.c
  head/sys/dev/ath/ath_hal/ah_internal.h

Modified: head/sys/dev/ath/ath_hal/ah.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ah.c	Thu Feb 19 04:10:51 2009	(r188770)
+++ head/sys/dev/ath/ath_hal/ah.c	Thu Feb 19 04:15:14 2009	(r188771)
@@ -539,6 +539,15 @@ ath_hal_getregdump(struct ath_hal *ah, c
 	}
 	return (char *) dp - (char *) dstbuf;
 }
+ 
+static void
+ath_hal_setregs(struct ath_hal *ah, const HAL_REGWRITE *regs, int space)
+{
+	while (space >= sizeof(HAL_REGWRITE)) {
+		OS_REG_WRITE(ah, regs->addr, regs->value);
+		regs++, space -= sizeof(HAL_REGWRITE);
+	}
+}
 
 HAL_BOOL
 ath_hal_getdiagstate(struct ath_hal *ah, int request,
@@ -553,6 +562,10 @@ ath_hal_getdiagstate(struct ath_hal *ah,
 	case HAL_DIAG_REGS:
 		*resultsize = ath_hal_getregdump(ah, args, *result,*resultsize);
 		return AH_TRUE;
+	case HAL_DIAG_SETREGS:
+		ath_hal_setregs(ah, args, argsize);
+		*resultsize = 0;
+		return AH_TRUE;
 	case HAL_DIAG_FATALERR:
 		*result = &AH_PRIVATE(ah)->ah_fatalState[0];
 		*resultsize = sizeof(AH_PRIVATE(ah)->ah_fatalState);

Modified: head/sys/dev/ath/ath_hal/ah_internal.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah_internal.h	Thu Feb 19 04:10:51 2009	(r188770)
+++ head/sys/dev/ath/ath_hal/ah_internal.h	Thu Feb 19 04:15:14 2009	(r188771)
@@ -49,6 +49,11 @@ typedef struct {
 	uint16_t	end;		/* ending register or zero */
 } HAL_REGRANGE;
 
+typedef struct {
+	uint32_t	addr;		/* regiser address/offset */
+	uint32_t	value;		/* value to write */
+} HAL_REGWRITE;
+
 /*
  * Transmit power scale factor.
  *
@@ -609,16 +614,14 @@ enum {
 	HAL_DIAG_RESETKEY	= 16,	/* Reset keycache backdoor */
 	HAL_DIAG_EEREAD		= 17,	/* Read EEPROM word */
 	HAL_DIAG_EEWRITE	= 18,	/* Write EEPROM word */
-	/* 19 was HAL_DIAG_TXCONT, 20-23 were for radar */
-	HAL_DIAG_REGREAD        = 24,   /* Reg reads */
-	HAL_DIAG_REGWRITE       = 25,   /* Reg writes */
-	HAL_DIAG_GET_REGBASE    = 26,   /* Get register base */
+	/* 19-26 removed, do not reuse */
 	HAL_DIAG_RDWRITE	= 27,	/* Write regulatory domain */
 	HAL_DIAG_RDREAD		= 28,	/* Get regulatory domain */
 	HAL_DIAG_FATALERR	= 29,	/* Read cached interrupt state */
 	HAL_DIAG_11NCOMPAT	= 30,	/* 11n compatibility tweaks */
 	HAL_DIAG_ANI_PARAMS	= 31,	/* ANI noise immunity parameters */
 	HAL_DIAG_CHECK_HANGS	= 32,	/* check h/w hangs */
+	HAL_DIAG_SETREGS	= 33,	/* write registers */
 };
 
 enum {


More information about the svn-src-all mailing list