Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
R
reform-boundary-uboot
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jack Humbert
reform-boundary-uboot
Commits
e6f22281
Commit
e6f22281
authored
19 years ago
by
Wolfgang Denk
Browse files
Options
Downloads
Patches
Plain Diff
Add iopset command on mpc8xx
Patch by Daniel Eisenhut, 25 Mar 2005
parent
a912733e
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
CHANGELOG
+3
-0
3 additions, 0 deletions
CHANGELOG
common/cmd_immap.c
+15
-6
15 additions, 6 deletions
common/cmd_immap.c
include/asm-ppc/iopin_8xx.h
+395
-0
395 additions, 0 deletions
include/asm-ppc/iopin_8xx.h
with
413 additions
and
6 deletions
CHANGELOG
+
3
−
0
View file @
e6f22281
...
...
@@ -2,6 +2,9 @@
Changes for U-Boot 1.1.4:
======================================================================
* Add iopset command on mpc8xx
Patch by Daniel Eisenhut, 25 Mar 2005
* Add support for MII in eepro100 driver.
Patch by Gleb Natapov, 21 Mar 2005
...
...
This diff is collapsed.
Click to expand it.
common/cmd_immap.c
+
15
−
6
View file @
e6f22281
...
...
@@ -34,6 +34,7 @@
#if defined(CONFIG_8xx)
#include
<asm/8xx_immap.h>
#include
<commproc.h>
#include
<asm/iopin_8xx.h>
#elif defined(CONFIG_8260)
#include
<asm/immap_8260.h>
#include
<asm/cpm_8260.h>
...
...
@@ -316,12 +317,11 @@ do_iopinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
int
do_iopset
(
cmd_tbl_t
*
cmdtp
,
int
flag
,
int
argc
,
char
*
argv
[])
{
#if defined(CONFIG_8260)
uint
rcode
=
0
;
static
uint
port
=
0
;
static
uint
pin
=
0
;
static
uint
value
=
0
;
static
enum
{
DIR
,
PAR
,
SOR
,
ODR
,
DAT
}
cmd
=
DAT
;
static
enum
{
DIR
,
PAR
,
SOR
,
ODR
,
DAT
,
INT
}
cmd
=
DAT
;
iopin_t
iopin
;
if
(
argc
!=
5
)
{
...
...
@@ -356,6 +356,11 @@ do_iopset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
case
's'
:
cmd
=
SOR
;
break
;
#if defined(CONFIG_8xx)
case
'i'
:
cmd
=
INT
;
break
;
#endif
default:
printf
(
"iopset: unknown command %s
\n
"
,
argv
[
3
]);
rcode
=
1
;
...
...
@@ -400,14 +405,18 @@ do_iopset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
else
iopin_set_low
(
&
iopin
);
break
;
#if defined(CONFIG_8xx)
case
INT
:
if
(
value
)
iopin_set_falledge
(
&
iopin
);
else
iopin_set_anyedge
(
&
iopin
);
break
;
#endif
}
}
return
rcode
;
#else
unimplemented
(
cmdtp
,
flag
,
argc
,
argv
);
return
0
;
#endif
}
int
...
...
This diff is collapsed.
Click to expand it.
include/asm-ppc/iopin_8xx.h
0 → 100644
+
395
−
0
View file @
e6f22281
/*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
/*
* MPC8xx I/O port pin manipulation functions
* Roughly based on iopin_8260.h
*/
#ifndef _ASM_IOPIN_8XX_H_
#define _ASM_IOPIN_8XX_H_
#include
<linux/types.h>
#include
<asm/8xx_immap.h>
#ifdef __KERNEL__
typedef
struct
{
u_char
port
:
2
;
/* port number (A=0, B=1, C=2, D=3) */
u_char
pin
:
5
;
/* port pin (0-31) */
u_char
flag
:
1
;
/* for whatever */
}
iopin_t
;
#define IOPIN_PORTA 0
#define IOPIN_PORTB 1
#define IOPIN_PORTC 2
#define IOPIN_PORTD 3
extern
__inline__
void
iopin_set_high
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padat
;
*
datp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdat
;
*
datp
|=
(
1
<<
(
31
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdat
;
*
datp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddat
;
*
datp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
void
iopin_set_low
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padat
;
*
datp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdat
;
*
datp
&=
~
(
1
<<
(
31
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdat
;
*
datp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddat
;
*
datp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
uint
iopin_is_high
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padat
;
return
(
*
datp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdat
;
return
(
*
datp
>>
(
31
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdat
;
return
(
*
datp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddat
;
return
(
*
datp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
return
0
;
}
extern
__inline__
uint
iopin_is_low
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padat
;
return
((
*
datp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdat
;
return
((
*
datp
>>
(
31
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdat
;
return
((
*
datp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
datp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddat
;
return
((
*
datp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
return
0
;
}
extern
__inline__
void
iopin_set_out
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padir
;
*
dirp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdir
;
*
dirp
|=
(
1
<<
(
31
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdir
;
*
dirp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddir
;
*
dirp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
void
iopin_set_in
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padir
;
*
dirp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdir
;
*
dirp
&=
~
(
1
<<
(
31
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdir
;
*
dirp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddir
;
*
dirp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
uint
iopin_is_out
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padir
;
return
(
*
dirp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdir
;
return
(
*
dirp
>>
(
31
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdir
;
return
(
*
dirp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddir
;
return
(
*
dirp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
return
0
;
}
extern
__inline__
uint
iopin_is_in
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_padir
;
return
((
*
dirp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbdir
;
return
((
*
dirp
>>
(
31
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcdir
;
return
((
*
dirp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
dirp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pddir
;
return
((
*
dirp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
return
0
;
}
extern
__inline__
void
iopin_set_odr
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_paodr
;
*
odrp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbodr
;
*
odrp
|=
(
1
<<
(
31
-
iopin
->
pin
));
}
}
extern
__inline__
void
iopin_set_act
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_paodr
;
*
odrp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbodr
;
*
odrp
&=
~
(
1
<<
(
31
-
iopin
->
pin
));
}
}
extern
__inline__
uint
iopin_is_odr
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_paodr
;
return
(
*
odrp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbodr
;
return
(
*
odrp
>>
(
31
-
iopin
->
pin
))
&
1
;
}
return
0
;
}
extern
__inline__
uint
iopin_is_act
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_paodr
;
return
((
*
odrp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
ushort
*
odrp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbodr
;
return
((
*
odrp
>>
(
31
-
iopin
->
pin
))
&
1
)
^
1
;
}
return
0
;
}
extern
__inline__
void
iopin_set_ded
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_papar
;
*
parp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbpar
;
*
parp
|=
(
1
<<
(
31
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcpar
;
*
parp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pdpar
;
*
parp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
void
iopin_set_gen
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_papar
;
*
parp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbpar
;
*
parp
&=
~
(
1
<<
(
31
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcpar
;
*
parp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pdpar
;
*
parp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
uint
iopin_is_ded
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_papar
;
return
(
*
parp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbpar
;
return
(
*
parp
>>
(
31
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcpar
;
return
(
*
parp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pdpar
;
return
(
*
parp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
return
0
;
}
extern
__inline__
uint
iopin_is_gen
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTA
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_papar
;
return
((
*
parp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTB
)
{
volatile
uint
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_cpm
.
cp_pbpar
;
return
((
*
parp
>>
(
31
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcpar
;
return
((
*
parp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
else
if
(
iopin
->
port
==
IOPIN_PORTD
)
{
volatile
ushort
*
parp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pdpar
;
return
((
*
parp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
return
0
;
}
extern
__inline__
void
iopin_set_opt2
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
sorp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcso
;
*
sorp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
void
iopin_set_opt1
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
sorp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcso
;
*
sorp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
uint
iopin_is_opt2
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
sorp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcso
;
return
(
*
sorp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
return
0
;
}
extern
__inline__
uint
iopin_is_opt1
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
sorp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcso
;
return
((
*
sorp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
return
0
;
}
extern
__inline__
void
iopin_set_falledge
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
intp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcint
;
*
intp
|=
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
void
iopin_set_anyedge
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
intp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcint
;
*
intp
&=
~
(
1
<<
(
15
-
iopin
->
pin
));
}
}
extern
__inline__
uint
iopin_is_falledge
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
intp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcint
;
return
(
*
intp
>>
(
15
-
iopin
->
pin
))
&
1
;
}
return
0
;
}
extern
__inline__
uint
iopin_is_anyedge
(
iopin_t
*
iopin
)
{
if
(
iopin
->
port
==
IOPIN_PORTC
)
{
volatile
ushort
*
intp
=
&
((
immap_t
*
)
CFG_IMMR
)
->
im_ioport
.
iop_pcint
;
return
((
*
intp
>>
(
15
-
iopin
->
pin
))
&
1
)
^
1
;
}
return
0
;
}
#endif
/* __KERNEL__ */
#endif
/* _ASM_IOPIN_8XX_H_ */
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment