Linux MIPS Architecture development
 help / color / mirror / Atom feed
* power management status for au1100
@ 2005-07-12 14:22 Rodolfo Giometti
  2005-07-12 15:56 ` Dan Malek
  2005-07-12 18:10 ` Rodolfo Giometti
  0 siblings, 2 replies; 10+ messages in thread
From: Rodolfo Giometti @ 2005-07-12 14:22 UTC (permalink / raw)
  To: linux-mips

Hello,

I'm just looking at linux support for power management on au1100 CPU
and I found that there are a lot of problems on enabling it... it
seems that current support cames from 2.4 series.

Is anybody dealing with it? I'd like to cooperate in order to have a
functional support.

Thanks in advance,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: power management status for au1100
  2005-07-12 14:22 power management status for au1100 Rodolfo Giometti
@ 2005-07-12 15:56 ` Dan Malek
  2005-07-12 18:10 ` Rodolfo Giometti
  1 sibling, 0 replies; 10+ messages in thread
From: Dan Malek @ 2005-07-12 15:56 UTC (permalink / raw)
  To: Rodolfo Giometti; +Cc: linux-mips


On Jul 12, 2005, at 7:22 AM, Rodolfo Giometti wrote:

> I'm just looking at linux support for power management on au1100 CPU
> and I found that there are a lot of problems on enabling it... it
> seems that current support cames from 2.4 series.

I provided most of the recent generic updates for the Au1xxx power
management in the 2.4.  It's quite a challenge since you also need
hardware support for external peripheral control (which should be
in the drivers) and a cooperating boot rom for deep sleep.

> Is anybody dealing with it? I'd like to cooperate in order to have a
> functional support.

I'm sure there are some custom derivatives of this around.  I'm
not actively working on it since I don't have a project that requires
the features.  I don't really have the time to do so, either :-)

The one thing to keep in mind is we probably shouldn't promote
any of the variable processor frequency, as Alchemy has warned
they don't qualify parts at anything but their stated operating values.
You can run the processors at different frequencies, but this can
require different external components to support it, not something
we should be dynamically changing for a particular system design.

Thanks.


	-- Dan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: power management status for au1100
  2005-07-12 14:22 power management status for au1100 Rodolfo Giometti
  2005-07-12 15:56 ` Dan Malek
@ 2005-07-12 18:10 ` Rodolfo Giometti
  2005-07-12 18:52   ` Dan Malek
  1 sibling, 1 reply; 10+ messages in thread
From: Rodolfo Giometti @ 2005-07-12 18:10 UTC (permalink / raw)
  To: linux-mips

[-- Attachment #1: Type: text/plain, Size: 5356 bytes --]

Looking at linux-2.6.10 I notice that the function
startup_match20_interrupt() has been mofified as follow:

    #ifdef CONFIG_PM
   -void startup_match20_interrupt(void)
   +void startup_match20_interrupt(void (*handler)(int, void *, struct
   pt_regs *))
    {
   +       static struct irqaction action;
   +       /* This is a big problem.... since we didn't use request_irq
   +          when kernel/irq.c calls probe_irq_xxx this interrupt will
   +          be probed for usage. This will end up disabling the device :(
   +
   +       Give it a bogus "action" pointer -- this will keep it from
   +          getting auto-probed!
   +
   +       By setting the status to match that of request_irq() we
   +       can avoid it.  --cgray
   +       */
   +       action.dev_id = handler;
   +       action.flags = 0;
   +       action.mask = 0;
   +       action.name = "Au1xxx TOY";
   +       action.handler = handler;
   +       action.next = NULL;
   +
   +       irq_desc[AU1000_TOY_MATCH2_INT].action = &action;
   +       irq_desc[AU1000_TOY_MATCH2_INT].status
   +                &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING |
   IRQ_INPROGRESS);
   +
           local_enable_irq(AU1000_TOY_MATCH2_INT);
    }
    #endif

and the irq dispatcher has been modified as follow:

           irq = au_ffs(intc0_req1) - 1;
           intc0_req1 &= ~(1<<irq);
   -#ifdef CONFIG_PM
   -       if (irq == AU1000_TOY_MATCH2_INT) {
   -               mask_and_ack_rise_edge_irq(irq);
   -               counter0_irq(irq, NULL, regs);
   -               local_enable_irq(irq);
   -       }
   -       else
   -#endif
   -       {
   -               do_IRQ(irq, regs);
   -       }
   +       do_IRQ(irq, regs);
    }
      
Well, running old code on my au1100 I have no problem but using new one I
got:

   Linux version 2.6.12 (giometti@vvonth) (gcc version 3.4.3) #29 Tue Jul 12 19:41:24 CEST 2005
   CPU revision is: 02030204
   AMD Alchemy WWPC Board
   (PRId 02030204) @ 396MHZ
   BCLK switching enabled!
   Determined physical RAM map:
    memory: 04000000 @ 00000000 (usable)
   Built 1 zonelists
   Kernel command line: console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.32.254:/home/develop/embedded/mipsel/distro/_geek ip=192.168.32.23:192.168.32.254::255.255.255.0:wwpc:eth0:off
   Primary instruction cache 16kB, physically tagged, 4-way, linesize 32 bytes.
   Primary data cache 16kB, 4-way, linesize 32 bytes.
   Synthesized TLB refill handler (20 instructions).
   Synthesized TLB load handler fastpath (32 instructions).
   Synthesized TLB store handler fastpath (32 instructions).
   Synthesized TLB modify handler fastpath (31 instructions).
   PID hash table entries: 512 (order: 9, 8192 bytes)
   calculating r4koff... 00060ae0(396000)
   CPU frequency 396.00 MHz
   Console: colour dummy device 80x25
   Break instruction in kernel code in arch/mips/kernel/traps.c::do_bp, line 629[#1]:
   Cpu 0
   $ 0   : 00000000 10007c00 00000000 000f41fa
   $ 4   : 80462000 000f41fa 00000000 00000000
   $ 8   : 26aa8a40 000f41fa 80462000 00000000
   $12   : 0000006e fffffffa ffffffff 0000000a
   $16   : 00000af8 804d0000 80461ef0 804d0000
   $20   : 80461e18 80462000 00000002 00000000
   $24   : 00000001 80461dea                  
   $28   : 80460000 80461e08 83fc92b8 8010277c
   Hi    : 000f41fa
   Lo    : 26aa8a40
   epc   : 80148b28 run_posix_cpu_timers+0x804/0x86c     Not tainted
   ra    : 8010277c counter0_irq+0x98/0x168
   Status: 10007c03    KERNEL EXL IE 
   Cause : 00808024
   PrId  : 02030204
   Modules linked in:
   Process swapper (pid: 0, threadinfo=80460000, task=80462000)
   Stack : 000003f4 000003f4 38313932 804c8934 80461e18 80461e18 00000000 00000000
           80462000 00000000 00000af8 804d0000 80461ef0 804d0000 00000b1b 00000011
           00000002 00000000 83fc92b8 8010277c 804de270 00000013 804de270 80461ec8
           804cf9d4 00000000 00000000 00000001 80461ef0 80150964 804e0000 80435d90
           00000002 10007c00 804a4220 00000011 804cf9d4 804e0000 80461ef0 83f43c00
           ...
   Call Trace:
    [<8010277c>] counter0_irq+0x98/0x168
    [<80150964>] handle_IRQ_event+0x7c/0x134
    [<80150b24>] __do_IRQ+0x108/0x194
    [<804be264>] uart_set_options+0xe0/0x178
    [<8010600c>] do_IRQ+0x1c/0x34
    [<80101390>] au1000_IRQ+0x150/0x1a0
    [<801292d8>] __call_console_drivers+0x80/0xac
    [<80416fc4>] _etext+0x0/0x8f03c
    [<804a6700>] start_kernel+0x11c/0x254
    [<804a6710>] start_kernel+0x12c/0x254
    [<804a6134>] unknown_bootoption+0x0/0x310


   Code: aea30140  08052103  aea4013c <0200000d> 080520de  8ea4013c  2404001e  24050001  0c04e2c9 
   Kernel panic - not syncing: Aiee, killing interrupt handler!

I suppose the problem is when function startup_match20_interrupt()
tries to install the irq handler for the counter0.

Why did you modify such function?

Where could be the problem in the new code?

Should we come back to the old code? ;-p

Thanks,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: power management status for au1100
  2005-07-12 18:10 ` Rodolfo Giometti
@ 2005-07-12 18:52   ` Dan Malek
  2005-07-16 14:45     ` Rodolfo Giometti
                       ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Dan Malek @ 2005-07-12 18:52 UTC (permalink / raw)
  To: Rodolfo Giometti; +Cc: linux-mips


On Jul 12, 2005, at 11:10 AM, Rodolfo Giometti wrote:

> Looking at linux-2.6.10 I notice that the function
> startup_match20_interrupt() has been mofified as follow:

This is an update AMD/Alchemy wanted so if you weren't using
power management the timer would be available for other uses.

> Where could be the problem in the new code?

I don't know.  I suspect some of it didn't get moved forward
properly.

> Should we come back to the old code? ;-p

Now that you know the reason for the change, perhaps we
should try to make it work properly :-)

Thanks.


	-- Dan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: power management status for au1100
  2005-07-12 18:52   ` Dan Malek
@ 2005-07-16 14:45     ` Rodolfo Giometti
  2005-07-16 14:49     ` Au1100 real time clock [was: power management status for au1100] Rodolfo Giometti
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Rodolfo Giometti @ 2005-07-16 14:45 UTC (permalink / raw)
  To: Dan Malek; +Cc: Rodolfo Giometti, linux-mips

[-- Attachment #1: Type: text/plain, Size: 719 bytes --]

On Tue, Jul 12, 2005 at 11:52:30AM -0700, Dan Malek wrote:
> Now that you know the reason for the change, perhaps we
> should try to make it work properly :-)

Ok. :)

When trying to compile the PM support I noticed that function
calibrate_delay() into «arch/mips/au1000/common/power.c» overrides the
same function into «init/calibrate.c».

Can be a problem? Which one is the right function to be used?

Thanks,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Au1100 real time clock [was: power management status for au1100]
  2005-07-12 18:52   ` Dan Malek
  2005-07-16 14:45     ` Rodolfo Giometti
@ 2005-07-16 14:49     ` Rodolfo Giometti
  2005-07-16 15:19     ` power management status for au1100 Rodolfo Giometti
  2005-07-18 17:30     ` Power Management for au1100 fixed! :) Rodolfo Giometti
  3 siblings, 0 replies; 10+ messages in thread
From: Rodolfo Giometti @ 2005-07-16 14:49 UTC (permalink / raw)
  To: Dan Malek; +Cc: linux-mips

[-- Attachment #1: Type: text/plain, Size: 712 bytes --]

On Tue, Jul 12, 2005 at 11:52:30AM -0700, Dan Malek wrote:
> This is an update AMD/Alchemy wanted so if you weren't using
> power management the timer would be available for other uses.

About this topic... I suppose that if I don't use PM support I can use
TOY timer as real time clock, but if I enable PM support (so TOY use
is reserved) should I use an external chip as system's real time
clock?

Thanks,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: power management status for au1100
  2005-07-12 18:52   ` Dan Malek
  2005-07-16 14:45     ` Rodolfo Giometti
  2005-07-16 14:49     ` Au1100 real time clock [was: power management status for au1100] Rodolfo Giometti
@ 2005-07-16 15:19     ` Rodolfo Giometti
  2005-07-18 17:30     ` Power Management for au1100 fixed! :) Rodolfo Giometti
  3 siblings, 0 replies; 10+ messages in thread
From: Rodolfo Giometti @ 2005-07-16 15:19 UTC (permalink / raw)
  To: Dan Malek; +Cc: linux-mips

[-- Attachment #1: Type: text/plain, Size: 1934 bytes --]

Looking function mips_timer_interrupt() (which is the normal timer
interrupt when PM is not enabled) I noticed that it has called from
file «arch/mips/au1000/common/int-handler.S» as follow:

	...
        .text
        .set    macro
        .set    noat
        .align  5

NESTED(au1000_IRQ, PT_SIZE, sp)
        SAVE_ALL
        CLI                             # Important: mark KERNEL mode !

        mfc0    t0,CP0_CAUSE            # get pending interrupts
        mfc0    t1,CP0_STATUS           # get enabled interrupts
        and     t0,t1                   # isolate allowed ones

        andi    t0,0xff00               # isolate pending bits
        beqz    t0, 3f                  # spurious interrupt

        andi    a0, t0, CAUSEF_IP7
        beq     a0, zero, 1f
        move    a0, sp
        jal     mips_timer_interrupt
        j       ret_from_irq
	...

Looking at «CLI» implementation into «include/asm/stackframe.h»:

   /*
    * Move to kernel mode and disable interrupts.
    * Set cp0 enable bit as sign that we're running on the kernel stack
    */
		   .macro  CLI
		   mfc0    t0, CP0_STATUS
		   li      t1, ST0_CU0 | 0x1f
		   or      t0, t1
		   xori    t0, 0x1f
		   mtc0    t0, CP0_STATUS
		   irq_disable_hazard
		   .endm

I see that the CLI macro ensures that mips_timer_interrupt() will be
executed into «kernel mode».

What do you think about that? Can it cause the error «Break
instruction in kernel code in arch/mips/kernel/traps.c::do_bp, line
629[#1]:»?

If so, can someone help me in fixing such bug? I'm not a MIPS assembly
master! ;-p

Ciao,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Power Management for au1100 fixed! :)
  2005-07-12 18:52   ` Dan Malek
                       ` (2 preceding siblings ...)
  2005-07-16 15:19     ` power management status for au1100 Rodolfo Giometti
@ 2005-07-18 17:30     ` Rodolfo Giometti
  2005-07-19  1:02       ` Dan Malek
  3 siblings, 1 reply; 10+ messages in thread
From: Rodolfo Giometti @ 2005-07-18 17:30 UTC (permalink / raw)
  To: Dan Malek; +Cc: linux-mips


[-- Attachment #1.1: Type: text/plain, Size: 584 bytes --]

On Tue, Jul 12, 2005 at 11:52:30AM -0700, Dan Malek wrote:
> Now that you know the reason for the change, perhaps we
> should try to make it work properly :-)

Ok, Fixed! :)

Here you can see the patch. Please note that I also fixed some type
mismatches and some comments.

Ciao,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

[-- Attachment #1.2: patch-PM_CONFIG --]
[-- Type: text/plain, Size: 6686 bytes --]

Index: arch/mips/au1000/common/irq.c
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/arch/mips/au1000/common/irq.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- a/arch/mips/au1000/common/irq.c	2 Jul 2005 06:45:44 -0000	1.1.1.1
+++ b/arch/mips/au1000/common/irq.c	18 Jul 2005 17:16:57 -0000	1.2
@@ -83,7 +83,7 @@
 void	(*board_init_irq)(void);
 
 #ifdef CONFIG_PM
-extern void counter0_irq(int irq, void *dev_id, struct pt_regs *regs);
+extern irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs);
 #endif
 
 static DEFINE_SPINLOCK(irq_lock);
@@ -293,29 +293,32 @@
 };
 
 #ifdef CONFIG_PM
-void startup_match20_interrupt(void (*handler)(int, void *, struct pt_regs *))
+void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *))
 {
+	struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT];
+
 	static struct irqaction action;
+	memset(&action, 0, sizeof(struct irqaction));
+
 	/* This is a big problem.... since we didn't use request_irq
 	   when kernel/irq.c calls probe_irq_xxx this interrupt will
 	   be probed for usage. This will end up disabling the device :(
 
-       Give it a bogus "action" pointer -- this will keep it from
+           Give it a bogus "action" pointer -- this will keep it from
 	   getting auto-probed!
 
-       By setting the status to match that of request_irq() we
-       can avoid it.  --cgray
+           By setting the status to match that of request_irq() we
+           can avoid it.  --cgray
 	*/
 	action.dev_id = handler;
-	action.flags = 0;
-	action.mask = 0;
+	action.flags = SA_INTERRUPT;
+	cpus_clear(action.mask);
 	action.name = "Au1xxx TOY";
 	action.handler = handler;
 	action.next = NULL;
 
-	irq_desc[AU1000_TOY_MATCH2_INT].action = &action; 
-	irq_desc[AU1000_TOY_MATCH2_INT].status 
-		 &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
+	desc->action = &action; 
+	desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
 
 	local_enable_irq(AU1000_TOY_MATCH2_INT);
 }
Index: arch/mips/au1000/common/power.c
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/arch/mips/au1000/common/power.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- a/arch/mips/au1000/common/power.c	2 Jul 2005 06:45:44 -0000	1.1.1.1
+++ b/arch/mips/au1000/common/power.c	18 Jul 2005 17:16:57 -0000	1.2
@@ -34,11 +34,13 @@
 #include <linux/pm.h>
 #include <linux/slab.h>
 #include <linux/sysctl.h>
+#include <linux/jiffies.h>
 
 #include <asm/string.h>
 #include <asm/uaccess.h>
 #include <asm/io.h>
 #include <asm/system.h>
+#include <asm/cacheflush.h>
 #include <asm/mach-au1x00/au1000.h>
 
 #ifdef CONFIG_PM
@@ -50,7 +52,7 @@
 #  define DPRINTK(fmt, args...)
 #endif
 
-static void calibrate_delay(void);
+static void au1000_calibrate_delay(void);
 
 extern void set_au1x00_speed(unsigned int new_freq);
 extern unsigned int get_au1x00_speed(void);
@@ -260,7 +262,7 @@
 }
 
 static int pm_do_sleep(ctl_table * ctl, int write, struct file *file,
-		       void *buffer, size_t * len)
+		       void __user *buffer, size_t * len, loff_t *ppos)
 {
 	int retval = 0;
 #ifdef SLEEP_TEST_TIMEOUT
@@ -294,7 +296,7 @@
 }
 
 static int pm_do_suspend(ctl_table * ctl, int write, struct file *file,
-			 void *buffer, size_t * len)
+			 void __user *buffer, size_t * len, loff_t *ppos)
 {
 	int retval = 0;
 
@@ -313,7 +315,7 @@
 
 
 static int pm_do_freq(ctl_table * ctl, int write, struct file *file,
-		      void *buffer, size_t * len)
+		      void __user *buffer, size_t * len, loff_t *ppos)
 {
 	int retval = 0, i;
 	unsigned long val, pll;
@@ -408,14 +410,14 @@
 
 
 	/* We don't want _any_ interrupts other than
-	 * match20. Otherwise our calibrate_delay()
+	 * match20. Otherwise our au1000_calibrate_delay()
 	 * calculation will be off, potentially a lot.
 	 */
 	intc0_mask = save_local_and_disable(0);
 	intc1_mask = save_local_and_disable(1);
 	local_enable_irq(AU1000_TOY_MATCH2_INT);
 	spin_unlock_irqrestore(&pm_lock, flags);
-	calibrate_delay();
+	au1000_calibrate_delay();
 	restore_local_and_enable(0, intc0_mask);
 	restore_local_and_enable(1, intc1_mask);
 	return retval;
@@ -455,7 +457,7 @@
    better than 1% */
 #define LPS_PREC 8
 
-static void calibrate_delay(void)
+static void au1000_calibrate_delay(void)
 {
 	unsigned long ticks, loopbit;
 	int lps_precision = LPS_PREC;
Index: arch/mips/au1000/common/time.c
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/arch/mips/au1000/common/time.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- a/arch/mips/au1000/common/time.c	2 Jul 2005 06:45:44 -0000	1.1.1.1
+++ b/arch/mips/au1000/common/time.c	18 Jul 2005 17:16:57 -0000	1.2
@@ -63,8 +63,11 @@
 static unsigned int timerhi = 0, timerlo = 0;
 
 #ifdef CONFIG_PM
-#define MATCH20_INC 328
-extern void startup_match20_interrupt(void (*handler)(int, void *, struct pt_regs *));
+#if HZ < 100 || HZ > 1000
+#error "unsupported HZ value! Must be in [100,1000]"
+#endif
+#define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */
+extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *));
 static unsigned long last_pc0, last_match20;
 #endif
 
@@ -116,17 +119,16 @@
 }
 
 #ifdef CONFIG_PM
-void counter0_irq(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs)
 {
 	unsigned long pc0;
 	int time_elapsed;
 	static int jiffie_drift = 0;
 
-	kstat.irqs[0][irq]++;
 	if (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20) {
 		/* should never happen! */
-		printk(KERN_WARNING "counter 0 w status eror\n");
-		return;
+		printk(KERN_WARNING "counter 0 w status error\n");
+		return IRQ_NONE;
 	}
 
 	pc0 = au_readl(SYS_TOYREAD);
@@ -163,6 +165,8 @@
 		update_process_times(user_mode(regs));
 #endif
 	}
+
+	return IRQ_HANDLED;
 }
 
 /* When we wakeup from sleep, we have to "catch up" on all of the
@@ -439,7 +443,7 @@
 		au_sync();
 		while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_M20);
 
-		/* setup match20 to interrupt once every 10ms */
+		/* setup match20 to interrupt once every HZ */
 		last_pc0 = last_match20 = au_readl(SYS_TOYREAD);
 		au_writel(last_match20 + MATCH20_INC, SYS_TOYMATCH2);
 		au_sync();

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Power Management for au1100 fixed! :)
  2005-07-18 17:30     ` Power Management for au1100 fixed! :) Rodolfo Giometti
@ 2005-07-19  1:02       ` Dan Malek
  2005-07-19  7:07         ` Pete Popov
  0 siblings, 1 reply; 10+ messages in thread
From: Dan Malek @ 2005-07-19  1:02 UTC (permalink / raw)
  To: Rodolfo Giometti; +Cc: linux-mips


On Jul 18, 2005, at 1:30 PM, Rodolfo Giometti wrote:

> Ok, Fixed! :)

Thanks.

> Here you can see the patch. Please note that I also fixed some type
> mismatches and some comments.

Looks good.  I asked Pete to push it in.

	-- Dan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Power Management for au1100 fixed! :)
  2005-07-19  1:02       ` Dan Malek
@ 2005-07-19  7:07         ` Pete Popov
  0 siblings, 0 replies; 10+ messages in thread
From: Pete Popov @ 2005-07-19  7:07 UTC (permalink / raw)
  To: Dan Malek; +Cc: Rodolfo Giometti, 'linux-mips@linux-mips.org'

On Mon, 2005-07-18 at 21:02 -0400, Dan Malek wrote:
> On Jul 18, 2005, at 1:30 PM, Rodolfo Giometti wrote:
> 
> > Ok, Fixed! :)
> 
> Thanks.
> 
> > Here you can see the patch. Please note that I also fixed some type
> > mismatches and some comments.
> 
> Looks good.  I asked Pete to push it in.

arch/mips/au1000/common/irq.c didn't apply cleanly. I applied it
manually. Rodolfo, do a cvs update and give it a try :)

Pete

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2005-07-19  7:06 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-12 14:22 power management status for au1100 Rodolfo Giometti
2005-07-12 15:56 ` Dan Malek
2005-07-12 18:10 ` Rodolfo Giometti
2005-07-12 18:52   ` Dan Malek
2005-07-16 14:45     ` Rodolfo Giometti
2005-07-16 14:49     ` Au1100 real time clock [was: power management status for au1100] Rodolfo Giometti
2005-07-16 15:19     ` power management status for au1100 Rodolfo Giometti
2005-07-18 17:30     ` Power Management for au1100 fixed! :) Rodolfo Giometti
2005-07-19  1:02       ` Dan Malek
2005-07-19  7:07         ` Pete Popov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox