Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
[linux-2.6] / arch / sh / kernel / cpu / ubc.S
1 /*
2  * arch/sh/kernel/cpu/ubc.S
3  *
4  * Set of management routines for the User Break Controller (UBC)
5  *
6  * Copyright (C) 2002 Paul Mundt
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by the
10  * Free Software Foundation; either version 2 of the License, or (at your
11  * option) any later version.
12  */
13 #include <linux/linkage.h>
14 #include <asm/ubc.h>
15
16 #define STBCR2          0xffc00010
17
18 ENTRY(ubc_sleep)
19         mov     #0, r0
20
21         mov.l   1f, r1          ! Zero out UBC_BBRA ..
22         mov.w   r0, @r1
23
24         mov.l   2f, r1          ! .. same for BBRB ..
25         mov.w   r0, @r1
26
27         mov.l   3f, r1          ! .. and again for BRCR.
28         mov.w   r0, @r1
29
30         mov.w   @r1, r0         ! Dummy read BRCR
31
32         mov.l   4f, r1          ! Set MSTP5 in STBCR2
33         mov.b   @r1, r0
34         or      #0x01, r0
35         mov.b   r0, @r1
36
37         mov.b   @r1, r0         ! Two dummy reads ..
38         mov.b   @r1, r0
39
40         rts
41         nop
42
43 ENTRY(ubc_wakeup)
44         mov.l   4f, r1          ! Clear MSTP5
45         mov.b   @r1, r0
46         and     #0xfe, r0
47         mov.b   r0, @r1
48
49         mov.b   @r1, r0         ! Two more dummy reads ..
50         mov.b   @r1, r0
51
52         rts
53         nop
54
55 1:      .long   UBC_BBRA
56 2:      .long   UBC_BBRB
57 3:      .long   UBC_BRCR
58 4:      .long   STBCR2
59