Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
7cfccad5
Commit
7cfccad5
authored
Oct 01, 2002
by
Russell King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ARM] iPAQ updates from Jamey Hicks
parent
e9174866
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
610 additions
and
287 deletions
+610
-287
arch/arm/mach-sa1100/h3600.c
arch/arm/mach-sa1100/h3600.c
+545
-248
include/asm-arm/arch-sa1100/h3600.h
include/asm-arm/arch-sa1100/h3600.h
+65
-39
No files found.
arch/arm/mach-sa1100/h3600.c
View file @
7cfccad5
This diff is collapsed.
Click to expand it.
include/asm-arm/arch-sa1100/h3600.h
View file @
7cfccad5
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
*
*
* History:
* History:
*
*
* 2001-10-??
Andrew Christian Added support for iPAQ H3800
* 2001-10-??
Andrew Christian Added support for iPAQ H3800
*
*
*/
*/
...
@@ -26,6 +26,11 @@
...
@@ -26,6 +26,11 @@
/* generalized support for H3xxx series Compaq Pocket PC's */
/* generalized support for H3xxx series Compaq Pocket PC's */
#define machine_is_h3xxx() (machine_is_h3100() || machine_is_h3600() || machine_is_h3800())
#define machine_is_h3xxx() (machine_is_h3100() || machine_is_h3600() || machine_is_h3800())
/* Physical memory regions corresponding to chip selects */
#define H3600_EGPIO_PHYS (SA1100_CS5_PHYS + 0x01000000)
#define H3600_BANK_2_PHYS SA1100_CS2_PHYS
#define H3600_BANK_4_PHYS SA1100_CS4_PHYS
/* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
/* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
#define H3600_EGPIO_VIRT 0xf0000000
#define H3600_EGPIO_VIRT 0xf0000000
#define H3600_BANK_2_VIRT 0xf1000000
#define H3600_BANK_2_VIRT 0xf1000000
...
@@ -36,8 +41,7 @@
...
@@ -36,8 +41,7 @@
--- these are common across all current iPAQ platforms
--- these are common across all current iPAQ platforms
*/
*/
#define GPIO_H3600_NPOWER_BUTTON GPIO_GPIO (0)
/* Also known as the "off button" */
#define GPIO_H3600_NPOWER_BUTTON GPIO_GPIO (0)
/* Also known as the "off button" */
#define GPIO_H3600_MICROCONTROLLER GPIO_GPIO (1)
/* From ASIC2 on H3800 */
#define GPIO_H3600_PCMCIA_CD1 GPIO_GPIO (10)
#define GPIO_H3600_PCMCIA_CD1 GPIO_GPIO (10)
#define GPIO_H3600_PCMCIA_IRQ1 GPIO_GPIO (11)
#define GPIO_H3600_PCMCIA_IRQ1 GPIO_GPIO (11)
...
@@ -56,83 +60,105 @@
...
@@ -56,83 +60,105 @@
#define GPIO_H3600_COM_CTS GPIO_GPIO (25)
#define GPIO_H3600_COM_CTS GPIO_GPIO (25)
#define GPIO_H3600_COM_RTS GPIO_GPIO (26)
#define GPIO_H3600_COM_RTS GPIO_GPIO (26)
#define IRQ_GPIO_H3600_NPOWER_BUTTON IRQ_GPIO0
#define IRQ_GPIO_H3600_NPOWER_BUTTON IRQ_GPIO0
#define IRQ_GPIO_H3600_MICROCONTROLLER IRQ_GPIO1
#define IRQ_GPIO_H3600_PCMCIA_CD1 IRQ_GPIO10
#define IRQ_GPIO_H3600_PCMCIA_CD1 IRQ_GPIO10
#define IRQ_GPIO_H3600_PCMCIA_IRQ1 IRQ_GPIO11
#define IRQ_GPIO_H3600_PCMCIA_IRQ1 IRQ_GPIO11
#define IRQ_GPIO_H3600_PCMCIA_CD0 IRQ_GPIO17
#define IRQ_GPIO_H3600_PCMCIA_CD0 IRQ_GPIO17
#define IRQ_GPIO_H3600_PCMCIA_IRQ0 IRQ_GPIO21
#define IRQ_GPIO_H3600_PCMCIA_IRQ0 IRQ_GPIO21
#define IRQ_GPIO_H3600_COM_DCD
IRQ_GPIO23
#define IRQ_GPIO_H3600_COM_DCD
IRQ_GPIO23
#define IRQ_GPIO_H3600_OPT_IRQ IRQ_GPIO24
#define IRQ_GPIO_H3600_OPT_IRQ IRQ_GPIO24
#define IRQ_GPIO_H3600_COM_CTS
IRQ_GPIO25
#define IRQ_GPIO_H3600_COM_CTS
IRQ_GPIO25
#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__
enum
ipaq_model
{
IPAQ_H3100
,
IPAQ_H3600
,
IPAQ_H3800
};
enum
ipaq_egpio_type
{
enum
ipaq_egpio_type
{
IPAQ_EGPIO_LCD_
ON
,
/* Power to the LCD panel */
IPAQ_EGPIO_LCD_
POWER
,
/* Power to the LCD panel */
IPAQ_EGPIO_CODEC_NRESET
,
/* Clear to reset the audio codec (remember to return high) */
IPAQ_EGPIO_CODEC_NRESET
,
/* Clear to reset the audio codec (remember to return high) */
IPAQ_EGPIO_AUDIO_ON
,
/* Audio power */
IPAQ_EGPIO_AUDIO_ON
,
/* Audio power */
IPAQ_EGPIO_QMUTE
,
/* Audio muting */
IPAQ_EGPIO_QMUTE
,
/* Audio muting */
IPAQ_EGPIO_OPT_NVRAM_ON
,
/* Non-volatile RAM on extension sleeves (SPI interface) */
IPAQ_EGPIO_OPT_NVRAM_ON
,
/* Non-volatile RAM on extension sleeves (SPI interface) */
IPAQ_EGPIO_OPT_ON
,
/* Power to extension sleeves */
IPAQ_EGPIO_OPT_ON
,
/* Power to extension sleeves */
IPAQ_EGPIO_CARD_RESET
,
/* Reset PCMCIA cards on extension sleeve (???) */
IPAQ_EGPIO_CARD_RESET
,
/* Reset PCMCIA cards on extension sleeve (???) */
IPAQ_EGPIO_OPT_RESET
,
/* Reset option pack (???) */
IPAQ_EGPIO_OPT_RESET
,
/* Reset option pack (???) */
IPAQ_EGPIO_IR_ON
,
/* IR sensor/emitter power */
IPAQ_EGPIO_IR_ON
,
/* IR sensor/emitter power */
IPAQ_EGPIO_IR_FSEL
,
/* IR speed selection 1->fast, 0->slow */
IPAQ_EGPIO_IR_FSEL
,
/* IR speed selection 1->fast, 0->slow */
IPAQ_EGPIO_RS232_ON
,
/* Maxim RS232 chip power */
IPAQ_EGPIO_RS232_ON
,
/* Maxim RS232 chip power */
IPAQ_EGPIO_VPP_ON
,
/* Turn on power to flash programming */
IPAQ_EGPIO_VPP_ON
,
/* Turn on power to flash programming */
IPAQ_EGPIO_LCD_ENABLE
,
/* Enable/disable LCD controller */
};
};
struct
ipaq_model_ops
{
struct
ipaq_model_ops
{
enum
ipaq_model
model
;
const
char
*
generic_name
;
const
char
*
generic_name
;
void
(
*
initialize
)(
void
);
void
(
*
control
)(
enum
ipaq_egpio_type
,
int
);
void
(
*
control
)(
enum
ipaq_egpio_type
,
int
);
unsigned
long
(
*
read
)(
void
);
unsigned
long
(
*
read
)(
void
);
void
(
*
blank_callback
)(
int
blank
);
int
(
*
pm_callback
)(
int
req
);
/* Primary model callback */
int
(
*
pm_callback_aux
)(
int
req
);
/* Secondary callback (used by HAL modules) */
};
};
extern
struct
ipaq_model_ops
ipaq_model_ops
;
extern
struct
ipaq_model_ops
ipaq_model_ops
;
static
__inline__
enum
ipaq_model
h3600_model
(
void
)
{
static
__inline__
const
char
*
h3600_generic_name
(
void
)
return
ipaq_model_ops
.
model
;
{
}
static
__inline__
const
char
*
h3600_generic_name
(
void
)
{
return
ipaq_model_ops
.
generic_name
;
return
ipaq_model_ops
.
generic_name
;
}
}
static
__inline__
void
init_h3600_egpio
(
void
)
{
static
__inline__
void
assign_h3600_egpio
(
enum
ipaq_egpio_type
x
,
int
level
)
if
(
ipaq_model_ops
.
initialize
)
{
ipaq_model_ops
.
initialize
();
}
static
__inline__
void
assign_h3600_egpio
(
enum
ipaq_egpio_type
x
,
int
level
)
{
if
(
ipaq_model_ops
.
control
)
if
(
ipaq_model_ops
.
control
)
ipaq_model_ops
.
control
(
x
,
level
);
ipaq_model_ops
.
control
(
x
,
level
);
}
}
static
__inline__
void
clr_h3600_egpio
(
enum
ipaq_egpio_type
x
)
{
static
__inline__
void
clr_h3600_egpio
(
enum
ipaq_egpio_type
x
)
{
if
(
ipaq_model_ops
.
control
)
if
(
ipaq_model_ops
.
control
)
ipaq_model_ops
.
control
(
x
,
0
);
ipaq_model_ops
.
control
(
x
,
0
);
}
}
static
__inline__
void
set_h3600_egpio
(
enum
ipaq_egpio_type
x
)
{
static
__inline__
void
set_h3600_egpio
(
enum
ipaq_egpio_type
x
)
{
if
(
ipaq_model_ops
.
control
)
if
(
ipaq_model_ops
.
control
)
ipaq_model_ops
.
control
(
x
,
1
);
ipaq_model_ops
.
control
(
x
,
1
);
}
}
static
__inline__
unsigned
long
read_h3600_egpio
(
void
)
{
static
__inline__
unsigned
long
read_h3600_egpio
(
void
)
{
if
(
ipaq_model_ops
.
read
)
if
(
ipaq_model_ops
.
read
)
return
ipaq_model_ops
.
read
();
return
ipaq_model_ops
.
read
();
return
0
;
return
0
;
}
}
static
__inline__
int
h3600_register_blank_callback
(
void
(
*
f
)(
int
))
{
ipaq_model_ops
.
blank_callback
=
f
;
return
0
;
}
static
__inline__
void
h3600_unregister_blank_callback
(
void
(
*
f
)(
int
))
{
ipaq_model_ops
.
blank_callback
=
NULL
;
}
static
__inline__
int
h3600_register_pm_callback
(
int
(
*
f
)(
int
))
{
ipaq_model_ops
.
pm_callback_aux
=
f
;
return
0
;
}
static
__inline__
void
h3600_unregister_pm_callback
(
int
(
*
f
)(
int
))
{
ipaq_model_ops
.
pm_callback_aux
=
NULL
;
}
static
__inline__
int
h3600_power_management
(
int
req
)
{
if
(
ipaq_model_ops
.
pm_callback
)
return
ipaq_model_ops
.
pm_callback
(
req
);
return
0
;
}
#endif
/* ASSEMBLY */
#endif
/* ASSEMBLY */
#endif
/* _INCLUDE_H3600_H_ */
#endif
/* _INCLUDE_H3600_H_ */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment