OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-arm/] [arch-sa1100/] [h3600.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/*
2
 *
3
 * Definitions for H3600 Handheld Computer
4
 *
5
 * Copyright 2000 Compaq Computer Corporation.
6
 *
7
 * Use consistent with the GNU GPL is permitted,
8
 * provided that this copyright notice is
9
 * preserved in its entirety in all copies and derived works.
10
 *
11
 * COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED,
12
 * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS
13
 * FITNESS FOR ANY PARTICULAR PURPOSE.
14
 *
15
 * Author: Jamey Hicks.
16
 *
17
 * History:
18
 *
19
 * 2001-10-??   Andrew Christian   Added support for iPAQ H3800
20
 *
21
 */
22
 
23
#ifndef _INCLUDE_H3600_H_
24
#define _INCLUDE_H3600_H_
25
 
26
#include <linux/config.h>
27
 
28
/* generalized support for H3xxx series Compaq Pocket PC's */
29
#define machine_is_h3xxx() (machine_is_h3100() || machine_is_h3600() || machine_is_h3800())
30
 
31
/* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
32
#define H3600_EGPIO_VIRT     0xf0000000
33
#define H3600_BANK_2_VIRT    0xf1000000
34
#define H3600_BANK_4_VIRT    0xf3800000
35
 
36
/*
37
   Machine-independent GPIO definitions
38
   --- these are common across all current iPAQ platforms
39
*/
40
 
41
#define GPIO_H3600_NPOWER_BUTTON        GPIO_GPIO (0)   /* Also known as the "off button"  */
42
#define GPIO_H3600_MICROCONTROLLER      GPIO_GPIO (1)   /* From ASIC2 on H3800 */
43
 
44
#define GPIO_H3600_PCMCIA_CD1           GPIO_GPIO (10)
45
#define GPIO_H3600_PCMCIA_IRQ1          GPIO_GPIO (11)
46
 
47
/* UDA1341 L3 Interface */
48
#define GPIO_H3600_L3_DATA              GPIO_GPIO (14)
49
#define GPIO_H3600_L3_MODE              GPIO_GPIO (15)
50
#define GPIO_H3600_L3_CLOCK             GPIO_GPIO (16)
51
 
52
#define GPIO_H3600_PCMCIA_CD0           GPIO_GPIO (17)
53
#define GPIO_H3600_SYS_CLK              GPIO_GPIO (19)
54
#define GPIO_H3600_PCMCIA_IRQ0          GPIO_GPIO (21)
55
 
56
#define GPIO_H3600_COM_DCD              GPIO_GPIO (23)
57
#define GPIO_H3600_OPT_IRQ              GPIO_GPIO (24)
58
#define GPIO_H3600_COM_CTS              GPIO_GPIO (25)
59
#define GPIO_H3600_COM_RTS              GPIO_GPIO (26)
60
 
61
#define IRQ_GPIO_H3600_NPOWER_BUTTON    IRQ_GPIO0
62
#define IRQ_GPIO_H3600_MICROCONTROLLER  IRQ_GPIO1
63
#define IRQ_GPIO_H3600_PCMCIA_CD1       IRQ_GPIO10
64
#define IRQ_GPIO_H3600_PCMCIA_IRQ1      IRQ_GPIO11
65
#define IRQ_GPIO_H3600_PCMCIA_CD0       IRQ_GPIO17
66
#define IRQ_GPIO_H3600_PCMCIA_IRQ0      IRQ_GPIO21
67
#define IRQ_GPIO_H3600_COM_DCD          IRQ_GPIO23
68
#define IRQ_GPIO_H3600_OPT_IRQ          IRQ_GPIO24
69
#define IRQ_GPIO_H3600_COM_CTS          IRQ_GPIO25
70
 
71
 
72
#ifndef __ASSEMBLY__
73
enum ipaq_model {
74
        IPAQ_H3100,
75
        IPAQ_H3600,
76
        IPAQ_H3800
77
};
78
 
79
enum ipaq_egpio_type {
80
        IPAQ_EGPIO_LCD_ON,        /* Power to the LCD panel */
81
        IPAQ_EGPIO_CODEC_NRESET,  /* Clear to reset the audio codec (remember to return high) */
82
        IPAQ_EGPIO_AUDIO_ON,      /* Audio power */
83
        IPAQ_EGPIO_QMUTE,         /* Audio muting */
84
        IPAQ_EGPIO_OPT_NVRAM_ON,  /* Non-volatile RAM on extension sleeves (SPI interface) */
85
        IPAQ_EGPIO_OPT_ON,        /* Power to extension sleeves */
86
        IPAQ_EGPIO_CARD_RESET,    /* Reset PCMCIA cards on extension sleeve (???) */
87
        IPAQ_EGPIO_OPT_RESET,     /* Reset option pack (???) */
88
        IPAQ_EGPIO_IR_ON,         /* IR sensor/emitter power */
89
        IPAQ_EGPIO_IR_FSEL,       /* IR speed selection 1->fast, 0->slow */
90
        IPAQ_EGPIO_RS232_ON,      /* Maxim RS232 chip power */
91
        IPAQ_EGPIO_VPP_ON,        /* Turn on power to flash programming */
92
};
93
 
94
struct ipaq_model_ops {
95
        enum ipaq_model model;
96
        const char     *generic_name;
97
        void          (*initialize)(void);
98
        void          (*control)(enum ipaq_egpio_type, int);
99
        unsigned long (*read)(void);
100
};
101
 
102
extern struct ipaq_model_ops ipaq_model_ops;
103
 
104
#ifdef CONFIG_SA1100_H3XXX
105
static __inline__ enum ipaq_model h3600_model( void ) {
106
        return ipaq_model_ops.model;
107
}
108
 
109
static __inline__ const char * h3600_generic_name( void ) {
110
        return ipaq_model_ops.generic_name;
111
}
112
 
113
static __inline__ void init_h3600_egpio( void ) {
114
        if (ipaq_model_ops.initialize)
115
                ipaq_model_ops.initialize();
116
}
117
 
118
static __inline__ void assign_h3600_egpio( enum ipaq_egpio_type x, int level ) {
119
        if (ipaq_model_ops.control)
120
                ipaq_model_ops.control(x,level);
121
}
122
 
123
static __inline__ void clr_h3600_egpio( enum ipaq_egpio_type x ) {
124
        if (ipaq_model_ops.control)
125
                ipaq_model_ops.control(x,0);
126
}
127
 
128
static __inline__ void set_h3600_egpio( enum ipaq_egpio_type x ) {
129
        if (ipaq_model_ops.control)
130
                ipaq_model_ops.control(x,1);
131
}
132
 
133
static __inline__ unsigned long read_h3600_egpio( void ) {
134
        if (ipaq_model_ops.read)
135
                return ipaq_model_ops.read();
136
        return 0;
137
}
138
 
139
#else
140
 
141
/*
142
 * This allows some drives to loose some ifdefs
143
 */
144
#define assign_h3600_egpio(x,y) do { } while (0)
145
#define clr_h3600_egpio(x)      do { } while (0)
146
#define set_h3600_egpio(x)      do { } while (0)
147
#define read_h3600_egpio()      (0)
148
 
149
#endif
150
 
151
#endif /* ASSEMBLY */
152
 
153
#endif /* _INCLUDE_H3600_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.