Title: [9284] trunk/arch/blackfin/kernel/debug-mmrs.c: debug-mmrs: unify eppi/ppi peripherals
Revision
9284
Author
vapier
Date
2010-10-22 00:41:35 -0400 (Fri, 22 Oct 2010)

Log Message

debug-mmrs: unify eppi/ppi peripherals

Modified Paths


Diff

Modified: trunk/arch/blackfin/kernel/debug-mmrs.c (9283 => 9284)


--- trunk/arch/blackfin/kernel/debug-mmrs.c	2010-10-22 04:41:13 UTC (rev 9283)
+++ trunk/arch/blackfin/kernel/debug-mmrs.c	2010-10-22 04:41:35 UTC (rev 9284)
@@ -12,6 +12,7 @@
 #include <linux/module.h>
 #include <asm/blackfin.h>
 #include <asm/bfin_can.h>
+#include <asm/bfin_ppi.h>
 
 #define _d(name, bits, addr, perms) debugfs_create_x##bits(name, perms, parent, (u##bits *)addr)
 #define d(name, bits, addr)         _d(name, bits, addr, S_IRUSR|S_IWUSR)
@@ -23,6 +24,24 @@
 #define D32(name)        d(#name, 32, name)
 #define D16(name)        d(#name, 16, name)
 
+#define REGS_OFF(peri, mmr) offsetof(struct bfin_##peri##_regs, mmr)
+#define __REGS(peri, sname, rname) \
+	do { \
+		struct bfin_##peri##_regs r; \
+		void *addr = (void *)(base + REGS_OFF(peri, rname)); \
+		strcpy(_buf, sname); \
+		if (sizeof(r.rname) == 2) \
+			debugfs_create_x16(buf, S_IRUSR|S_IWUSR, parent, addr); \
+		else \
+			debugfs_create_x32(buf, S_IRUSR|S_IWUSR, parent, addr); \
+	} while (0)
+#define REGS_STR_PFX(buf, pfx, num) \
+	({ \
+		buf + (num >= 0 ? \
+			sprintf(buf, #pfx "%i_", num) : \
+			sprintf(buf, #pfx "_")); \
+	})
+
 /*
  * Core registers (not memory mapped)
  */
@@ -70,18 +89,14 @@
 /*
  * CAN
  */
-#define CAN_OFF(mmr) offsetof(struct bfin_can_regs, mmr)
-#define __CAN(uname, lname) \
-	do { \
-		strcpy(_buf, #uname); \
-		debugfs_create_x16(buf, S_IRUSR|S_IWUSR, parent, (u16 *)(base + CAN_OFF(lname))); \
-	} while (0)
+#define CAN_OFF(mmr)  REGS_OFF(can, mmr)
+#define __CAN(uname, lname) __REGS(can, #uname, lname)
 static void __init __maybe_unused
 bfin_debug_mmrs_can(struct dentry *parent, unsigned long base, int num)
 {
 	static struct dentry *am, *mb;
 	int i, j;
-	char buf[32], *_buf = buf + sprintf(buf, "CAN%i_", num);
+	char buf[32], *_buf = REGS_STR_PFX(buf, CAN, num);
 
 	if (!am) {
 		am = debugfs_create_dir("am", parent);
@@ -166,6 +181,31 @@
 #define CAN(num) bfin_debug_mmrs_can(parent, CAN##num##_MC1, num)
 
 /*
+ * EPPI
+ */
+#define __EPPI(uname, lname) __REGS(eppi, #uname, lname)
+static void __init __maybe_unused
+bfin_debug_mmrs_eppi(struct dentry *parent, unsigned long base, int num)
+{
+	char buf[32], *_buf = REGS_STR_PFX(buf, EPPI, num);
+	__EPPI(STATUS, status);
+	__EPPI(HCOUNT, hcount);
+	__EPPI(HDELAY, hdelay);
+	__EPPI(VCOUNT, vcount);
+	__EPPI(VDELAY, vdelay);
+	__EPPI(FRAME, frame);
+	__EPPI(LINE, line);
+	__EPPI(CLKDIV, clkdiv);
+	__EPPI(CONTROL, control);
+	__EPPI(FS1W_HBL, fs1w_hbl);
+	__EPPI(FS1P_AVPL, fs1p_avpl);
+	__EPPI(FS2W_LVB, fs2w_lvb);
+	__EPPI(FS2P_LAVF, fs2p_lavf);
+	__EPPI(CLIP, clip);
+}
+#define EPPI(num) bfin_debug_mmrs_eppi(parent, EPPI##num##_STATUS, num)
+
+/*
  * General Purpose Timers
  */
 #define GPTIMER_OFF(mmr) (TIMER0_##mmr - TIMER0_CONFIG)
@@ -177,7 +217,7 @@
 static void __init __maybe_unused
 bfin_debug_mmrs_gptimer(struct dentry *parent, unsigned long base, int num)
 {
-	char buf[32], *_buf = buf + sprintf(buf, "TIMER%i_", num);
+	char buf[32], *_buf = REGS_STR_PFX(buf, TIMER, num);
 	__GPTIMER(CONFIG);
 	__GPTIMER(COUNTER);
 	__GPTIMER(PERIOD);
@@ -186,6 +226,22 @@
 #define GPTIMER(num) bfin_debug_mmrs_gptimer(parent, TIMER##num##_CONFIG, num)
 
 /*
+ * PPI
+ */
+#define __PPI(uname, lname) __REGS(ppi, #uname, lname)
+static void __init __maybe_unused
+bfin_debug_mmrs_ppi(struct dentry *parent, unsigned long base, int num)
+{
+	char buf[32], *_buf = REGS_STR_PFX(buf, PPI, num);
+	__PPI(CONTROL, control);
+	__PPI(STATUS, status);
+	__PPI(COUNT, count);
+	__PPI(DELAY, delay);
+	__PPI(FRAME, frame);
+}
+#define PPI(num) bfin_debug_mmrs_ppi(parent, PPI##num##_STATUS, num)
+
+/*
  * SPORT
  */
 static inline int sport_width(void *mmr)
@@ -240,9 +296,9 @@
 		debugfs_create_x##bits(buf, S_IRUSR|S_IWUSR, parent, (u##bits *)(base + SPORT_OFF(name))); \
 	} while (0)
 static void __init __maybe_unused
-bfin_debug_mmrs_spi(struct dentry *parent, unsigned long base, int num)
+bfin_debug_mmrs_sport(struct dentry *parent, unsigned long base, int num)
 {
-	char buf[32], *_buf = buf + sprintf(buf, "SPORT%i_", num);
+	char buf[32], *_buf = REGS_STR_PFX(buf, SPORT, num);
 	__SPORT(CHNL, 16);
 	__SPORT(MCMC1, 16);
 	__SPORT(MCMC2, 16);
@@ -266,7 +322,7 @@
 	__SPORT(TFSDIV, 16);
 	__SPORT_WO(TX);
 }
-#define SPORT(num) bfin_debug_mmrs_spi(parent, SPORT##num##_TCR1, num)
+#define SPORT(num) bfin_debug_mmrs_sport(parent, SPORT##num##_TCR1, num)
 
 /*
  * The actual debugfs generation
@@ -277,7 +333,7 @@
 {
 	struct dentry *top, *parent;
 
-	printk(KERN_DEBUG "Setting up Blackfin MMR debugfs\n");
+	pr_info("Setting up Blackfin MMR debugfs\n");
 
 	top = debugfs_create_dir("blackfin", NULL);
 	if (top == NULL)
@@ -663,6 +719,19 @@
 # endif
 #endif
 
+#if defined(EPPI0_STATUS) || defined(EPPI1_STATUS) || defined(EPPI2_STATUS)
+	parent = debugfs_create_dir("eppi", top);
+# ifdef EPPI0_STATUS
+	EPPI(0);
+# endif
+# ifdef EPPI1_STATUS
+	EPPI(1);
+# endif
+# ifdef EPPI2_STATUS
+	EPPI(2);
+# endif
+#endif
+
 	parent = debugfs_create_dir("gptimer", top);
 #ifdef TIMER_DISABLE
 	D16(TIMER_DISABLE);
@@ -923,6 +992,19 @@
 	D16(VR_CTL);
 	D32(CHIPID);	/* it's part of this hardware block */
 
+#if defined(PPI_STATUS) || defined(PPI0_STATUS) || defined(PPI1_STATUS)
+	parent = debugfs_create_dir("ppi", top);
+# ifdef PPI_STATUS
+	bfin_debug_mmrs_ppi(parent, PPI_STATUS, -1)
+# endif
+# ifdef PPI0_STATUS
+	PPI(0);
+# endif
+# ifdef PPI1_STATUS
+	PPI(1);
+# endif
+#endif
+
 #ifdef PWM_CTRL
 	parent = debugfs_create_dir("pwm", top);
 	D16(PWM_CTRL);
@@ -1378,19 +1460,6 @@
 		d("NONGPIO_DRIVE", 16, 0xFFC03280);
 		d("NONGPIO_HYSTERESIS", 16, 0xFFC03288);
 
-		parent = debugfs_create_dir("OTP", top);
-		d("OTP_DATA0", 32, 0xFFC03680);
-		d("OTP_DATA1", 32, 0xFFC03684);
-		d("OTP_DATA2", 32, 0xFFC03688);
-		d("OTP_DATA3", 32, 0xFFC0368C);
-
-		parent = debugfs_create_dir("PPI", top);
-		d("PPI_CONTROL", 16, 0xFFC01000);
-		d("PPI_COUNT", 16, 0xFFC01008);
-		d("PPI_DELAY", 16, 0xFFC0100C);
-		d("PPI_FRAME", 16, 0xFFC01010);
-		d("PPI_STATUS", 16, 0xFFC01004);
-
 		parent = debugfs_create_dir("Pin Control", top);
 		d("PORTF_FER", 16, 0xFFC03200);
 		d("PORTG_FER", 16, 0xFFC03204);
@@ -1782,13 +1851,6 @@
 		d("NONGPIO_HYSTERESIS", 16, 0xFFC03288);
 		d("NONGPIO_SLEW", 16, 0xFFC03284);
 
-		parent = debugfs_create_dir("PPI", top);
-		d("PPI_CONTROL", 16, 0xFFC01000);
-		d("PPI_COUNT", 16, 0xFFC01008);
-		d("PPI_DELAY", 16, 0xFFC0100C);
-		d("PPI_FRAME", 16, 0xFFC01010);
-		d("PPI_STATUS", 16, 0xFFC01004);
-
 		parent = debugfs_create_dir("Pin Control", top);
 		d("PORTF_FER", 16, 0xFFC03200);
 		d("PORTG_FER", 16, 0xFFC03204);
@@ -2181,13 +2243,6 @@
 		d("NONGPIO_HYSTERESIS", 16, 0xFFC03288);
 		d("NONGPIO_SLEW", 16, 0xFFC03284);
 
-		parent = debugfs_create_dir("PPI", top);
-		d("PPI_CONTROL", 16, 0xFFC01000);
-		d("PPI_COUNT", 16, 0xFFC01008);
-		d("PPI_DELAY", 16, 0xFFC0100C);
-		d("PPI_FRAME", 16, 0xFFC01010);
-		d("PPI_STATUS", 16, 0xFFC01004);
-
 		parent = debugfs_create_dir("Pin Control", top);
 		d("PORTF_FER", 16, 0xFFC03200);
 		d("PORTG_FER", 16, 0xFFC03204);
@@ -2800,13 +2855,6 @@
 		d("MDMA_S1_Y_COUNT", 16, 0xFFC00ED8);
 		d("MDMA_S1_Y_MODIFY", 16, 0xFFC00EDC);
 
-		parent = debugfs_create_dir("PPI", top);
-		d("PPI_CONTROL", 16, 0xFFC01000);
-		d("PPI_COUNT", 16, 0xFFC01008);
-		d("PPI_DELAY", 16, 0xFFC0100C);
-		d("PPI_FRAME", 16, 0xFFC01010);
-		d("PPI_STATUS", 16, 0xFFC01004);
-
 		parent = debugfs_create_dir("SPI", top);
 		d("SPI_BAUD", 16, 0xFFC00514);
 		d("SPI_CTL", 16, 0xFFC00500);
@@ -3086,13 +3134,6 @@
 		d("MDMA_S1_Y_COUNT", 16, 0xFFC00FD8);
 		d("MDMA_S1_Y_MODIFY", 16, 0xFFC00FDC);
 
-		parent = debugfs_create_dir("PPI", top);
-		d("PPI_CONTROL", 16, 0xFFC01000);
-		d("PPI_COUNT", 16, 0xFFC01008);
-		d("PPI_DELAY", 16, 0xFFC0100C);
-		d("PPI_FRAME", 16, 0xFFC01010);
-		d("PPI_STATUS", 16, 0xFFC01004);
-
 		parent = debugfs_create_dir("Pin Control", top);
 		d("PORTF_FER", 16, 0xFFC03200);
 		d("PORTG_FER", 16, 0xFFC03204);
@@ -3691,13 +3732,6 @@
 		d("MDMA1_S1_Y_COUNT", 16, 0xFFC01FD8);
 		d("MDMA1_S1_Y_MODIFY", 16, 0xFFC01FDC);
 
-		parent = debugfs_create_dir("PPI", top);
-		d("PPI_CONTROL", 16, 0xFFC01000);
-		d("PPI_COUNT", 16, 0xFFC01008);
-		d("PPI_DELAY", 16, 0xFFC0100C);
-		d("PPI_FRAME", 16, 0xFFC01010);
-		d("PPI_STATUS", 16, 0xFFC01004);
-
 		parent = debugfs_create_dir("SPI", top);
 		d("SPI0_BAUD", 16, 0xFFC00514);
 		d("SPI0_CTL", 16, 0xFFC00500);
@@ -4118,36 +4152,6 @@
 		d("DMAC1_TCCNT", 16, 0xFFC01B10);
 		d("DMAC1_TCPER", 16, 0xFFC01B0C);
 
-		parent = debugfs_create_dir("EPPI", top);
-		d("EPPI1_CLIP", 32, 0xFFC01334);
-		d("EPPI1_CLKDIV", 16, 0xFFC0131C);
-		d("EPPI1_CONTROL", 32, 0xFFC01320);
-		d("EPPI1_FRAME", 16, 0xFFC01314);
-		d("EPPI1_FS1P_AVPL", 32, 0xFFC01328);
-		d("EPPI1_FS1W_HBL", 32, 0xFFC01324);
-		d("EPPI1_FS2P_LAVF", 32, 0xFFC01330);
-		d("EPPI1_FS2W_LVB", 32, 0xFFC0132C);
-		d("EPPI1_HCOUNT", 16, 0xFFC01304);
-		d("EPPI1_HDELAY", 16, 0xFFC01308);
-		d("EPPI1_LINE", 16, 0xFFC01318);
-		d("EPPI1_STATUS", 16, 0xFFC01300);
-		d("EPPI1_VCOUNT", 16, 0xFFC0130C);
-		d("EPPI1_VDELAY", 16, 0xFFC01310);
-		d("EPPI2_CLIP", 32, 0xFFC02934);
-		d("EPPI2_CLKDIV", 16, 0xFFC0291C);
-		d("EPPI2_CONTROL", 32, 0xFFC02920);
-		d("EPPI2_FRAME", 16, 0xFFC02914);
-		d("EPPI2_FS1P_AVPL", 32, 0xFFC02928);
-		d("EPPI2_FS1W_HBL", 32, 0xFFC02924);
-		d("EPPI2_FS2P_LAVF", 32, 0xFFC02930);
-		d("EPPI2_FS2W_LVB", 32, 0xFFC0292C);
-		d("EPPI2_HCOUNT", 16, 0xFFC02904);
-		d("EPPI2_HDELAY", 16, 0xFFC02908);
-		d("EPPI2_LINE", 16, 0xFFC02918);
-		d("EPPI2_STATUS", 16, 0xFFC02900);
-		d("EPPI2_VCOUNT", 16, 0xFFC0290C);
-		d("EPPI2_VDELAY", 16, 0xFFC02910);
-
 		parent = debugfs_create_dir("HMDMA", top);
 		d("HMDMA0_BCINIT", 16, 0xFFC04508);
 		d("HMDMA0_BCOUNT", 16, 0xFFC04518);
@@ -4989,50 +4993,6 @@
 		d("DMAC1_TCCNT", 16, 0xFFC01B10);
 		d("DMAC1_TCPER", 16, 0xFFC01B0C);
 
-		parent = debugfs_create_dir("EPPI", top);
-		d("EPPI0_CLIP", 32, 0xFFC01034);
-		d("EPPI0_CLKDIV", 16, 0xFFC0101C);
-		d("EPPI0_CONTROL", 32, 0xFFC01020);
-		d("EPPI0_FRAME", 16, 0xFFC01014);
-		d("EPPI0_FS1P_AVPL", 32, 0xFFC01028);
-		d("EPPI0_FS1W_HBL", 32, 0xFFC01024);
-		d("EPPI0_FS2P_LAVF", 32, 0xFFC01030);
-		d("EPPI0_FS2W_LVB", 32, 0xFFC0102C);
-		d("EPPI0_HCOUNT", 16, 0xFFC01004);
-		d("EPPI0_HDELAY", 16, 0xFFC01008);
-		d("EPPI0_LINE", 16, 0xFFC01018);
-		d("EPPI0_STATUS", 16, 0xFFC01000);
-		d("EPPI0_VCOUNT", 16, 0xFFC0100C);
-		d("EPPI0_VDELAY", 16, 0xFFC01010);
-		d("EPPI1_CLIP", 32, 0xFFC01334);
-		d("EPPI1_CLKDIV", 16, 0xFFC0131C);
-		d("EPPI1_CONTROL", 32, 0xFFC01320);
-		d("EPPI1_FRAME", 16, 0xFFC01314);
-		d("EPPI1_FS1P_AVPL", 32, 0xFFC01328);
-		d("EPPI1_FS1W_HBL", 32, 0xFFC01324);
-		d("EPPI1_FS2P_LAVF", 32, 0xFFC01330);
-		d("EPPI1_FS2W_LVB", 32, 0xFFC0132C);
-		d("EPPI1_HCOUNT", 16, 0xFFC01304);
-		d("EPPI1_HDELAY", 16, 0xFFC01308);
-		d("EPPI1_LINE", 16, 0xFFC01318);
-		d("EPPI1_STATUS", 16, 0xFFC01300);
-		d("EPPI1_VCOUNT", 16, 0xFFC0130C);
-		d("EPPI1_VDELAY", 16, 0xFFC01310);
-		d("EPPI2_CLIP", 32, 0xFFC02934);
-		d("EPPI2_CLKDIV", 16, 0xFFC0291C);
-		d("EPPI2_CONTROL", 32, 0xFFC02920);
-		d("EPPI2_FRAME", 16, 0xFFC02914);
-		d("EPPI2_FS1P_AVPL", 32, 0xFFC02928);
-		d("EPPI2_FS1W_HBL", 32, 0xFFC02924);
-		d("EPPI2_FS2P_LAVF", 32, 0xFFC02930);
-		d("EPPI2_FS2W_LVB", 32, 0xFFC0292C);
-		d("EPPI2_HCOUNT", 16, 0xFFC02904);
-		d("EPPI2_HDELAY", 16, 0xFFC02908);
-		d("EPPI2_LINE", 16, 0xFFC02918);
-		d("EPPI2_STATUS", 16, 0xFFC02900);
-		d("EPPI2_VCOUNT", 16, 0xFFC0290C);
-		d("EPPI2_VDELAY", 16, 0xFFC02910);
-
 		parent = debugfs_create_dir("HMDMA", top);
 		d("HMDMA0_BCINIT", 16, 0xFFC04508);
 		d("HMDMA0_BCOUNT", 16, 0xFFC04518);
@@ -5729,50 +5689,6 @@
 		d("DMAC1_TCCNT", 16, 0xFFC01B10);
 		d("DMAC1_TCPER", 16, 0xFFC01B0C);
 
-		parent = debugfs_create_dir("EPPI", top);
-		d("EPPI0_CLIP", 32, 0xFFC01034);
-		d("EPPI0_CLKDIV", 16, 0xFFC0101C);
-		d("EPPI0_CONTROL", 32, 0xFFC01020);
-		d("EPPI0_FRAME", 16, 0xFFC01014);
-		d("EPPI0_FS1P_AVPL", 32, 0xFFC01028);
-		d("EPPI0_FS1W_HBL", 32, 0xFFC01024);
-		d("EPPI0_FS2P_LAVF", 32, 0xFFC01030);
-		d("EPPI0_FS2W_LVB", 32, 0xFFC0102C);
-		d("EPPI0_HCOUNT", 16, 0xFFC01004);
-		d("EPPI0_HDELAY", 16, 0xFFC01008);
-		d("EPPI0_LINE", 16, 0xFFC01018);
-		d("EPPI0_STATUS", 16, 0xFFC01000);
-		d("EPPI0_VCOUNT", 16, 0xFFC0100C);
-		d("EPPI0_VDELAY", 16, 0xFFC01010);
-		d("EPPI1_CLIP", 32, 0xFFC01334);
-		d("EPPI1_CLKDIV", 16, 0xFFC0131C);
-		d("EPPI1_CONTROL", 32, 0xFFC01320);
-		d("EPPI1_FRAME", 16, 0xFFC01314);
-		d("EPPI1_FS1P_AVPL", 32, 0xFFC01328);
-		d("EPPI1_FS1W_HBL", 32, 0xFFC01324);
-		d("EPPI1_FS2P_LAVF", 32, 0xFFC01330);
-		d("EPPI1_FS2W_LVB", 32, 0xFFC0132C);
-		d("EPPI1_HCOUNT", 16, 0xFFC01304);
-		d("EPPI1_HDELAY", 16, 0xFFC01308);
-		d("EPPI1_LINE", 16, 0xFFC01318);
-		d("EPPI1_STATUS", 16, 0xFFC01300);
-		d("EPPI1_VCOUNT", 16, 0xFFC0130C);
-		d("EPPI1_VDELAY", 16, 0xFFC01310);
-		d("EPPI2_CLIP", 32, 0xFFC02934);
-		d("EPPI2_CLKDIV", 16, 0xFFC0291C);
-		d("EPPI2_CONTROL", 32, 0xFFC02920);
-		d("EPPI2_FRAME", 16, 0xFFC02914);
-		d("EPPI2_FS1P_AVPL", 32, 0xFFC02928);
-		d("EPPI2_FS1W_HBL", 32, 0xFFC02924);
-		d("EPPI2_FS2P_LAVF", 32, 0xFFC02930);
-		d("EPPI2_FS2W_LVB", 32, 0xFFC0292C);
-		d("EPPI2_HCOUNT", 16, 0xFFC02904);
-		d("EPPI2_HDELAY", 16, 0xFFC02908);
-		d("EPPI2_LINE", 16, 0xFFC02918);
-		d("EPPI2_STATUS", 16, 0xFFC02900);
-		d("EPPI2_VCOUNT", 16, 0xFFC0290C);
-		d("EPPI2_VDELAY", 16, 0xFFC02910);
-
 		parent = debugfs_create_dir("HMDMA", top);
 		d("HMDMA0_BCINIT", 16, 0xFFC04508);
 		d("HMDMA0_BCOUNT", 16, 0xFFC04518);
@@ -6935,18 +6851,6 @@
 		d("MDMA2_S1_Y_COUNT", 16, 0xFFC00FD8);
 		d("MDMA2_S1_Y_MODIFY", 16, 0xFFC00FDC);
 
-		parent = debugfs_create_dir("PPI", top);
-		d("PPI0_CONTROL", 16, 0xFFC01000);
-		d("PPI0_COUNT", 16, 0xFFC01008);
-		d("PPI0_DELAY", 16, 0xFFC0100C);
-		d("PPI0_FRAME", 16, 0xFFC01010);
-		d("PPI0_STATUS", 16, 0xFFC01004);
-		d("PPI1_CONTROL", 16, 0xFFC01300);
-		d("PPI1_COUNT", 16, 0xFFC01308);
-		d("PPI1_DELAY", 16, 0xFFC0130C);
-		d("PPI1_FRAME", 16, 0xFFC01310);
-		d("PPI1_STATUS", 16, 0xFFC01304);
-
 		parent = debugfs_create_dir("SPI", top);
 		d("SPI_BAUD", 16, 0xFFC00514);
 		d("SPI_CTL", 16, 0xFFC00500);
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to