commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=e63b5df952a867545c21741d3fd727d4889b877e
branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk

Signed-off-by: Steven Miao <[email protected]>
---
 drivers/char/bfin_simple_timer.c |   34 +++++++++++++++++++++-------------
 1 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/drivers/char/bfin_simple_timer.c b/drivers/char/bfin_simple_timer.c
index 56c6986..275d803 100644
--- a/drivers/char/bfin_simple_timer.c
+++ b/drivers/char/bfin_simple_timer.c
@@ -36,6 +36,7 @@
 #include <asm/irq.h>
 #include <asm/bfin_simple_timer.h>
 #include <asm/bfin-global.h>
+#include <asm/portmux.h>
 
 #define TIMER_MAJOR 238
 #define DRV_NAME    "bfin_simple_timer"
@@ -46,27 +47,28 @@ MODULE_LICENSE("GPL");
 
 struct timer {
 	unsigned short id, bit;
+	unsigned short per_pin;
 	unsigned long irqbit, isr_count;
 	int irq;
 };
 
 static struct timer timer_code[MAX_BLACKFIN_GPTIMERS] = {
-	{TIMER0_id,  TIMER0bit,  TIMER_STATUS_TIMIL0, 0, IRQ_TIMER0},
-	{TIMER1_id,  TIMER1bit,  TIMER_STATUS_TIMIL1, 0, IRQ_TIMER1},
-	{TIMER2_id,  TIMER2bit,  TIMER_STATUS_TIMIL2, 0, IRQ_TIMER2},
+	{TIMER0_id,  TIMER0bit,  P_TMR0, TIMER_STATUS_TIMIL0, 0, IRQ_TIMER0},
+	{TIMER1_id,  TIMER1bit,  P_TMR1, TIMER_STATUS_TIMIL1, 0, IRQ_TIMER1},
+	{TIMER2_id,  TIMER2bit,  P_TMR2, TIMER_STATUS_TIMIL2, 0, IRQ_TIMER2},
 #if (MAX_BLACKFIN_GPTIMERS > 3)
-	{TIMER3_id,  TIMER3bit,  TIMER_STATUS_TIMIL3, 0, IRQ_TIMER3},
-	{TIMER4_id,  TIMER4bit,  TIMER_STATUS_TIMIL4, 0, IRQ_TIMER4},
-	{TIMER5_id,  TIMER5bit,  TIMER_STATUS_TIMIL5, 0, IRQ_TIMER5},
-	{TIMER6_id,  TIMER6bit,  TIMER_STATUS_TIMIL6, 0, IRQ_TIMER6},
-	{TIMER7_id,  TIMER7bit,  TIMER_STATUS_TIMIL7, 0, IRQ_TIMER7},
+	{TIMER3_id,  TIMER3bit,  P_TMR3, TIMER_STATUS_TIMIL3, 0, IRQ_TIMER3},
+	{TIMER4_id,  TIMER4bit,  P_TMR4, TIMER_STATUS_TIMIL4, 0, IRQ_TIMER4},
+	{TIMER5_id,  TIMER5bit,  P_TMR5, TIMER_STATUS_TIMIL5, 0, IRQ_TIMER5},
+	{TIMER6_id,  TIMER6bit,  P_TMR6, TIMER_STATUS_TIMIL6, 0, IRQ_TIMER6},
+	{TIMER7_id,  TIMER7bit,  P_TMR7, TIMER_STATUS_TIMIL7, 0, IRQ_TIMER7},
 #endif
 #if (MAX_BLACKFIN_GPTIMERS > 8)
-	{TIMER8_id,  TIMER8bit,  TIMER_STATUS_TIMIL8, 0, IRQ_TIMER8},
-	{TIMER9_id,  TIMER9bit,  TIMER_STATUS_TIMIL9, 0, IRQ_TIMER9},
-	{TIMER10_id, TIMER10bit, TIMER_STATUS_TIMIL10, 0, IRQ_TIMER10},
+	{TIMER8_id,  TIMER8bit,  P_TMR8, TIMER_STATUS_TIMIL8, 0, IRQ_TIMER8},
+	{TIMER9_id,  TIMER9bit,  P_TMR9, TIMER_STATUS_TIMIL9, 0, IRQ_TIMER9},
+	{TIMER10_id, TIMER10bit, P_TMR10, TIMER_STATUS_TIMIL10, 0, IRQ_TIMER10},
 #if (MAX_BLACKFIN_GPTIMERS > 11)
-	{TIMER11_id, TIMER11bit, TIMER_STATUS_TIMIL11, 0, IRQ_TIMER11},
+	{TIMER11_id, TIMER11bit, P_TMR11, TIMER_STATUS_TIMIL11, 0, IRQ_TIMER11},
 #endif
 #endif
 };
@@ -167,7 +169,13 @@ timer_open(struct inode *inode, struct file *filp)
 		return err;
 	}
 
-	set_gptimer_config(t->id, OUT_DIS | PWM_OUT | PERIOD_CNT | IRQ_ENA);
+	err = peripheral_request(t->per_pin, "timer test");
+	if (err) {
+		printk(KERN_ERR "request pin(%d) failed\n", t->per_pin);
+		free_irq(t->irq, (void *)minor);
+		return err;
+	}
+
 	pr_debug(DRV_NAME ": device(%d) opened\n", minor);
 
 	return 0;
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to