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
nexedi
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