Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Librem5
uboot-imx
Commits
0608e04d
Commit
0608e04d
authored
Mar 25, 2004
by
wdenk
Browse files
* Patch by Klaus Heydeck, 13 Mar 2003:
Add support for KUP4X Board
parent
b79a11cc
Changes
28
Hide whitespace changes
Inline
Side-by-side
CHANGELOG
View file @
0608e04d
...
...
@@ -2,6 +2,9 @@
Changes for U-Boot 1.0.2:
======================================================================
* Patch by Klaus Heydeck, 13 Mar 2003:
Add support for KUP4X Board
* Patch by Pavel Bartusek, 21 Mar 2004
Add Reiserfs support
...
...
MAINTAINERS
View file @
0608e04d
...
...
@@ -146,6 +146,7 @@ Bill Hargen <Bill_Hargen@Jabil.com>
Klaus Heydeck <heydeck@kieback-peter.de>
KUP4K MPC855
KUP4X MPC859
Murray Jensen <Murray.Jensen@cmst.csiro.au>
...
...
MAKEALL
View file @
0608e04d
...
...
@@ -40,15 +40,15 @@ LIST_8xx=" \
GEN860T_SC GENIETV GTH hermes
\
IAD210 ICU862_100MHz IP860 IVML24
\
IVML24_128 IVML24_256 IVMS8 IVMS8_128
\
IVMS8_256 KUP4K
LANTEC lwmon
\
MBX MBX860T MHPC
MPC86xADS
\
MVS1 NETVIA NETVIA_V2
NX823
\
pcu_e QS823 QS850
QS860T
\
R360MPI RBC823 rmu
RPXClassic
\
RPXlite RRvision SM850
SPD823TS
\
svm_sc8xx SXNI855T TOP860
TQM823L
\
TQM823L_LCD TQM850L TQM855L
TQM860L
\
v37
\
IVMS8_256 KUP4K
KUP4X LANTEC
\
lwmon
MBX MBX860T MHPC
\
MPC86xADS
MVS1 NETVIA NETVIA_V2
\
NX823
pcu_e QS823 QS850
\
QS860T
R360MPI RBC823 rmu
\
RPXClassic
RPXlite RRvision SM850
\
SPD823TS
svm_sc8xx SXNI855T TOP860
\
TQM823L
TQM823L_LCD TQM850L TQM855L
\
TQM860L
v37
\
"
#########################################################################
...
...
Makefile
View file @
0608e04d
...
...
@@ -358,7 +358,10 @@ IVMS8_config: unconfig
@
./mkconfig
-a
IVMS8 ppc mpc8xx ivm
KUP4K_config
:
unconfig
@
./mkconfig
$
(
@:_config
=)
ppc mpc8xx kup4k
@
./mkconfig
$
(
@:_config
=)
ppc mpc8xx kup4k kup
KUP4X_config
:
unconfig
@
./mkconfig
$
(
@:_config
=)
ppc mpc8xx kup4x kup
LANTEC_config
:
unconfig
@
./mkconfig
$
(
@:_config
=)
ppc mpc8xx lantec
...
...
board/kup
4k
/Makefile
→
board/kup/Makefile
View file @
0608e04d
#
# (C) Copyright 2000-200
2
# (C) Copyright 2000-200
4
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
...
...
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB
=
lib
$(BOARD)
.a
OBJS
=
$(BOARD)
.o flash.o
OBJS
=
$(BOARD)
.o flash.o
kup.o
$(LIB)
:
.depend $(OBJS)
$(AR)
crv
$@
$(OBJS)
...
...
board/kup
4k
/flash.c
→
board/kup
/common
/flash.c
View file @
0608e04d
/*
* (C) Copyright 2000-200
2
* (C) Copyright 2000-200
4
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* See file CREDITS for list of people who contributed to this
...
...
@@ -197,13 +197,13 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
case
AMD_ID_LV800T
:
info
->
flash_id
+=
FLASH_AM800T
;
info
->
sector_count
=
19
;
info
->
size
=
0x00
2
00000
;
break
;
/* =>
2
MB */
info
->
size
=
0x00
1
00000
;
break
;
/* =>
1
MB */
case
AMD_ID_LV800B
:
info
->
flash_id
+=
FLASH_AM800B
;
info
->
sector_count
=
19
;
info
->
size
=
0x00
2
00000
;
break
;
/* =>
2
MB */
info
->
size
=
0x00
1
00000
;
break
;
/* =>
1
MB */
default:
info
->
flash_id
=
FLASH_UNKNOWN
;
return
(
0
);
/* => no or unknown flash */
...
...
board/kup/common/kup.c
0 → 100644
View file @
0608e04d
/*
* (C) Copyright 2004
* Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de.
*
* 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
*/
#include
<common.h>
#include
<mpc8xx.h>
#include
"kup.h"
int
misc_init_f
(
void
)
{
volatile
immap_t
*
immap
=
(
immap_t
*
)
CFG_IMMR
;
volatile
sysconf8xx_t
*
siu
=
&
immap
->
im_siu_conf
;
while
(
siu
->
sc_sipend
&
0x20000000
)
{
/* printf("waiting for 5V VCC\n"); */
;
}
/* RS232 / RS485 default is RS232 */
immap
->
im_ioport
.
iop_padat
&=
~
(
PA_RS485
);
immap
->
im_ioport
.
iop_papar
&=
~
(
PA_RS485
);
immap
->
im_ioport
.
iop_paodr
&=
~
(
PA_RS485
);
immap
->
im_ioport
.
iop_padir
|=
(
PA_RS485
);
return
(
0
);
}
#ifdef CONFIG_IDE_LED
void
ide_led
(
uchar
led
,
uchar
status
)
{
volatile
immap_t
*
immap
=
(
immap_t
*
)
CFG_IMMR
;
/* We have one led for both pcmcia slots */
if
(
status
)
{
/* led on */
immap
->
im_ioport
.
iop_padat
&=
~
(
PA_LED_YELLOW
);
}
else
{
immap
->
im_ioport
.
iop_padat
|=
(
PA_LED_YELLOW
);
}
}
#endif
void
poweron_key
(
void
)
{
volatile
immap_t
*
immap
=
(
immap_t
*
)
CFG_IMMR
;
immap
->
im_ioport
.
iop_pcpar
&=
~
(
PC_SWITCH1
);
immap
->
im_ioport
.
iop_pcdir
&=
~
(
PC_SWITCH1
);
if
(
immap
->
im_ioport
.
iop_pcdat
&
(
PC_SWITCH1
))
setenv
(
"key1"
,
"off"
);
else
setenv
(
"key1"
,
"on"
);
}
board/kup/common/kup.h
0 → 100644
View file @
0608e04d
/*
* (C) Copyright 2004
* Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de.
*
* 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
*/
#ifndef __KUP_H
#define __KUP_H
#define PA_8 0x0080
#define PA_11 0x0010
#define PA_12 0x0008
#define PB_14 0x00020000
#define PB_17 0x00004000
#define PC_9 0x0040
#define PA_RS485 PA_11
/* SCC1: 0=RS232 1=RS485 */
#define PA_LED_YELLOW PA_8
#define BP_USB_VCC PB_14
/* VCC for USB devices 0=vcc on, 1=vcc off*/
#define PB_LCD_PWM PB_17
/* PB 17 */
#define PC_SWITCH1 PC_9
/* Reboot switch */
extern
void
poweron_key
(
void
);
#endif
/* __KUP_H */
board/kup/kup4k/Makefile
0 → 100644
View file @
0608e04d
#
# (C) Copyright 2000-2004
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# 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
#
include
$(TOPDIR)/config.mk
LIB
=
lib
$(BOARD)
.a
OBJS
=
$(BOARD)
.o ../common/flash.o ../common/kup.o
$(LIB)
:
.depend $(OBJS)
$(AR)
crv
$@
$(OBJS)
#########################################################################
.depend
:
Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
$(CC)
-M
$(CFLAGS)
$(SOBJS:.o=.S)
$(OBJS:.o=.c)
>
$@
sinclude
.depend
#########################################################################
board/kup4k/config.mk
→
board/
kup/
kup4k/config.mk
View file @
0608e04d
#
# (C) Copyright 2000-200
2
# (C) Copyright 2000-200
4
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
...
...
board/kup4k/kup4k.c
→
board/
kup/
kup4k/kup4k.c
View file @
0608e04d
/*
* (C) Copyright 2000
,
200
1, 2002
* (C) Copyright 2000
-
200
4
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
* Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de
*
...
...
@@ -24,16 +24,23 @@
#include
<common.h>
#include
<mpc8xx.h>
#include
"../common/kup.h"
#ifdef CONFIG_KUP4K_LOGO
#include
"s1d13706.h"
#endif
#undef DEBUG
#ifdef DEBUG
# define debugk(fmt,args...) printf(fmt ,##args)
#else
# define debugk(fmt,args...)
#endif
typedef
struct
{
volatile
unsigned
char
*
VmemAddr
;
volatile
unsigned
char
*
RegAddr
;
}
FB_INFO_S1D13xxx
;
typedef
struct
{
volatile
unsigned
char
*
VmemAddr
;
volatile
unsigned
char
*
RegAddr
;
}
FB_INFO_S1D13xxx
;
/* ------------------------------------------------------------------------- */
...
...
@@ -42,15 +49,15 @@ static long int dram_size (long int, long int *, long int);
#endif
#ifdef CONFIG_KUP4K_LOGO
void
lcd_logo
(
bd_t
*
bd
);
void
lcd_logo
(
bd_t
*
bd
);
#endif
/* ------------------------------------------------------------------------- */
#define _NOT_USED_ 0xFFFFFFFF
const
uint
sdram_table
[]
=
{
const
uint
sdram_table
[]
=
{
/*
* Single Read. (Offset 0 in UPMA RAM)
*/
...
...
@@ -114,8 +121,19 @@ const uint sdram_table[] =
int
checkboard
(
void
)
{
volatile
immap_t
*
immap
=
(
immap_t
*
)
CFG_IMMR
;
uchar
*
latch
,
rev
,
mod
;
printf
(
"### No HW ID - assuming KUP4K-Color
\n
"
);
/*
* Init ChipSelect #4 (CAN + HW-Latch)
*/
immap
->
im_memctl
.
memc_or4
=
0xFFFF8926
;
immap
->
im_memctl
.
memc_br4
=
0x90000401
;
latch
=
(
uchar
*
)
0x90000200
;
rev
=
(
*
latch
&
0xF8
)
>>
3
;
mod
=
(
*
latch
&
0x03
);
printf
(
"Board: KUP4K Rev %d.%d SN: %s
\n
"
,
rev
,
mod
,
getenv
(
"ethaddr"
));
return
(
0
);
}
...
...
@@ -230,10 +248,42 @@ static long int dram_size (long int mamr_value, long int *base,
{
volatile immap_t *immap = (immap_t *) CFG_IMMR;
volatile memctl8xx_t *memctl = &immap->im_memctl;
volatile long int *addr;
ulong cnt, val;
ulong save[32]; /* to make test non-destructive */
unsigned char i = 0;
memctl->memc_mamr = mamr_value;
return(get_ram_size(base, maxsize));
for (cnt = maxsize / sizeof (long); cnt > 0; cnt >>= 1) {
addr = base + cnt; /* pointer arith! */
save[i++] = *addr;
*addr = ~cnt;
}
/* write 0 to base address */
addr = base;
save[i] = *addr;
*addr = 0;
/* check at base address */
if ((val = *addr) != 0) {
*addr = save[i];
return (0);
}
for (cnt = 1; cnt <= maxsize / sizeof (long); cnt <<= 1) {
addr = base + cnt; /* pointer arith! */
val = *addr;
*addr = save[--i];
if (val != (~cnt)) {
return (cnt * sizeof (long));
}
}
return (maxsize);
}
#endif
...
...
@@ -247,7 +297,6 @@ int misc_init_r (void)
#ifdef CONFIG_KUP4K_LOGO
bd_t
*
bd
=
gd
->
bd
;
lcd_logo
(
bd
);
#endif
/* CONFIG_KUP4K_LOGO */
#ifdef CONFIG_IDE_LED
...
...
@@ -257,14 +306,14 @@ int misc_init_r (void)
immap
->
im_ioport
.
iop_papar
&=
~
0x80
;
immap
->
im_ioport
.
iop_padat
|=
0x80
;
/* turn it off */
#endif
setenv
(
"hw"
,
"4k"
);
poweron_key
();
return
(
0
);
}
#ifdef CONFIG_KUP4K_LOGO
#define PB_LCD_PWM ((uint)0x00004000)
/* PB 17 */
void
lcd_logo
(
bd_t
*
bd
)
{
FB_INFO_S1D13xxx
fb_info
;
...
...
@@ -277,104 +326,117 @@ void lcd_logo (bd_t * bd)
int
rs
,
gs
,
bs
;
int
r
=
8
,
g
=
8
,
b
=
4
;
int
r1
,
g1
,
b1
;
int
n
;
uchar
tmp
[
64
];
/* long enough for environment variables */
int
tft
=
0
;
immr
->
im_cpm
.
cp_pbpar
&=
~
PB_LCD_PWM
;
immr
->
im_cpm
.
cp_pbodr
&=
~
PB_LCD_PWM
;
immr
->
im_cpm
.
cp_pbdat
&=
~
PB_LCD_PWM
;
/* set to 0 = enabled */
immr
->
im_cpm
.
cp_pbdir
|=
PB_LCD_PWM
;
immr
->
im_cpm
.
cp_pbpar
&=
~
(
PB_LCD_PWM
);
immr
->
im_cpm
.
cp_pbodr
&=
~
(
PB_LCD_PWM
);
immr
->
im_cpm
.
cp_pbdat
&=
~
(
PB_LCD_PWM
);
/* set to 0 = enabled */
immr
->
im_cpm
.
cp_pbdir
|=
(
PB_LCD_PWM
);
/*----------------------------------------------------------------------------- */
/**/
/* Initialize the chip and the frame buffer driver. */
/**/
/*----------------------------------------------------------------------------- */
memctl
=
&
immr
->
im_memctl
;
/* memctl->memc_or5 = 0xFFC007F0; / * 4 MB 17 WS or externel TA */
/* memctl->memc_br5 = 0x80000801; / * Start at 0x80000000 */
memctl
=
&
immr
->
im_memctl
;
memctl
->
memc_or5
=
0xFFC00708
;
/* 4 MB 17 WS or externel TA */
memctl
->
memc_br5
=
0x80080801
;
/* Start at 0x80080000 */
/*
* Init ChipSelect #5 (S1D13768)
*/
memctl
->
memc_or5
=
0xFFC007F0
;
/* 4 MB 17 WS or externel TA */
memctl
->
memc_br5
=
0x80080801
;
/* Start at 0x80080000 */
fb_info
.
VmemAddr
=
(
unsigned
char
*
)
(
S1D_PHYSICAL_VMEM_ADDR
);
fb_info
.
RegAddr
=
(
unsigned
char
*
)
(
S1D_PHYSICAL_REG_ADDR
);
if
((((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0
]
!=
0x28
)
||
(((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
1
]
!=
0x14
))
{
||
(((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
1
]
!=
0x14
))
{
printf
(
"Warning:LCD Controller S1D13706 not found
\n
"
);
setenv
(
"lcd"
,
"none"
);
return
;
}
/* init controller */
for
(
i
=
0
;
i
<
sizeof
(
aS1DRegs
)
/
sizeof
(
aS1DRegs
[
0
]);
i
++
)
{
s1dReg
=
aS1DRegs
[
i
].
Index
;
s1dValue
=
aS1DRegs
[
i
].
Value
;
/* printf("sid1 Index: %02x Register: %02x Wert: %02x\n",i, aS1DRegs[i].Index, aS1DRegs[i].Value); */
for
(
i
=
0
;
i
<
sizeof
(
aS1DRegs_prelimn
)
/
sizeof
(
aS1DRegs_prelimn
[
0
]);
i
++
)
{
s1dReg
=
aS1DRegs_prelimn
[
i
].
Index
;
s1dValue
=
aS1DRegs_prelimn
[
i
].
Value
;
debugk
(
"s13768 reg: %02x value: %02x
\n
"
,
aS1DRegs_prelimn
[
i
].
Index
,
aS1DRegs_prelimn
[
i
].
Value
);
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
s1dReg
/
sizeof
(
S1D_VALUE
)]
=
s1dValue
;
s1dValue
;
}
#undef MONOCHROME
#ifdef MONOCHROME
switch
(
bd
->
bi_busfreq
)
{
#if 0
case 24000000:
((S1D_VALUE *) fb_info.RegAddr)[0x05] = 0x32;
((S1D_VALUE *) fb_info.RegAddr)[0x12] = 0x28;
break;
case 32000000:
((S1D_VALUE *) fb_info.RegAddr)[0x05] = 0x32;
((S1D_VALUE *) fb_info.RegAddr)[0x12] = 0x33;
break;
#endif
case
40000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x32
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x40
;
break
;
case
48000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x32
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x4C
;
break
;
default:
printf
(
"KUP4K S1D1: unknown busfrequency: %ld assuming 64 MHz
\n
"
,
bd
->
bi_busfreq
);
case
64000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x32
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x69
;
break
;
n
=
getenv_r
(
"lcd"
,
tmp
,
sizeof
(
tmp
));
if
(
n
>
0
)
{
if
(
!
strcmp
(
"tft"
,
tmp
))
tft
=
1
;
else
tft
=
0
;
}
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x10
]
=
0x00
;
#else
switch
(
bd
->
bi_busfreq
)
{
#if 0
case 24000000:
((S1D_VALUE *) fb_info.RegAddr)[0x05] = 0x22;
((S1D_VALUE *) fb_info.RegAddr)[0x12] = 0x34;
break;
case 32000000:
((S1D_VALUE *) fb_info.RegAddr)[0x05] = 0x32;
((S1D_VALUE *) fb_info.RegAddr)[0x12] = 0x34;
break;
#endif
case
40000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x32
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x41
;
break
;
case
48000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x22
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x34
;
break
;
default:
printf
(
"KUP4K S1D1: unknown busfrequency: %ld assuming 64 MHz
\n
"
,
bd
->
bi_busfreq
);
case
64000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x32
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x66
;
break
;
}
if (((S1D_VALUE *) fb_info.RegAddr)[0xAC] & 0x04)
tft = 0;
else
tft = 1;
#endif
debugk
(
"Port=0x%02x -> TFT=%d
\n
"
,
tft
,
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0xAC
]);
/* init controller */
if
(
!
tft
)
{
for
(
i
=
0
;
i
<
sizeof
(
aS1DRegs_stn
)
/
sizeof
(
aS1DRegs_stn
[
0
]);
i
++
)
{
s1dReg
=
aS1DRegs_stn
[
i
].
Index
;
s1dValue
=
aS1DRegs_stn
[
i
].
Value
;
debugk
(
"s13768 reg: %02x value: %02x
\n
"
,
aS1DRegs_stn
[
i
].
Index
,
aS1DRegs_stn
[
i
].
Value
);
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
s1dReg
/
sizeof
(
S1D_VALUE
)]
=
s1dValue
;
}
n
=
getenv_r
(
"contrast"
,
tmp
,
sizeof
(
tmp
));
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0xB3
]
=
(
n
>
0
)
?
(
uchar
)
simple_strtoul
(
tmp
,
NULL
,
10
)
*
255
/
100
:
0xA0
;
switch
(
bd
->
bi_busfreq
)
{
case
40000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x32
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x41
;
break
;
case
48000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x22
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x34
;
break
;
default:
printf
(
"KUP4K S1D1: unknown busfrequency: %ld assuming 64 MHz
\n
"
,
bd
->
bi_busfreq
);
case
64000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x32
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x66
;
break
;
}
/* setenv("lcd","stn"); */
}
else
{
for
(
i
=
0
;
i
<
sizeof
(
aS1DRegs_tft
)
/
sizeof
(
aS1DRegs_tft
[
0
]);
i
++
)
{
s1dReg
=
aS1DRegs_tft
[
i
].
Index
;
s1dValue
=
aS1DRegs_tft
[
i
].
Value
;
debugk
(
"s13768 reg: %02x value: %02x
\n
"
,
aS1DRegs_tft
[
i
].
Index
,
aS1DRegs_tft
[
i
].
Value
);
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
s1dReg
/
sizeof
(
S1D_VALUE
)]
=
s1dValue
;
}
switch
(
bd
->
bi_busfreq
)
{
default:
printf
(
"KUP4K S1D1: unknown busfrequency: %ld assuming 64 MHz
\n
"
,
bd
->
bi_busfreq
);
case
40000000
:
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x05
]
=
0x42
;
((
S1D_VALUE
*
)
fb_info
.
RegAddr
)[
0x12
]
=
0x30
;
break
;
}
/* setenv("lcd","tft"); */
}
/* create and set colormap */
rs
=
256
/
(
r
-
1
);
...
...
@@ -384,27 +446,13 @@ void lcd_logo (bd_t * bd)
r1
=
(
rs
*
((
i
/
(
g
*
b
))
%
r
))
*
255
;
g1
=
(
gs
*
((
i
/
b
)
%
g
))
*
255
;
b1
=
(
bs
*
((
i
)
%
b
))
*
255
;
/* printf
("%d %04x %04x %04x\n",i,r1>>4,g1>>4,b1>>4);
*/
debugk
(
"%d %04x %04x %04x
\n
"
,
i
,
r1
>>
4
,
g1
>>
4
,
b1
>>
4
);
S1D_WRITE_PALETTE
(
fb_info
.
RegAddr
,
i
,
(
r1
>>
4
),
(
g1
>>
4
),
(
b1
>>
4
));
(
b1
>>
4
));
}
/* copy bitmap */
fb
=
(
char
*
)
(
fb_info
.
VmemAddr
);
memcpy
(
fb
,
(
uchar
*
)
CONFIG_KUP4K_LOGO
,
320
*
240
);
}
#endif
/* CONFIG_KUP4K_LOGO */
#ifdef CONFIG_IDE_LED
void
ide_led
(
uchar
led
,
uchar
status
)
{
volatile
immap_t
*
immap
=
(
immap_t
*
)
CFG_IMMR
;
/* We have one led for both pcmcia slots */
if
(
status
)
{
/* led on */
immap
->
im_ioport
.
iop_padat
&=
~
0x80
;
}
else
{
immap
->
im_ioport
.
iop_padat
|=
0x80
;
}