]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/kup/common/kup.c
Merge branch 'master' of git://git.denx.de/u-boot-ti
[karo-tx-uboot.git] / board / kup / common / kup.c
1 /*
2  * (C) Copyright 2004
3  * Klaus Heydeck, Kieback & Peter GmbH & Co KG, heydeck@kieback-peter.de.
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  */
23
24 #include <common.h>
25 #include <mpc8xx.h>
26 #include "kup.h"
27 #include <asm/io.h>
28
29
30 int misc_init_f(void)
31 {
32         volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
33         volatile sysconf8xx_t *siu = &immap->im_siu_conf;
34
35         while (in_be32(&siu->sc_sipend) & 0x20000000) {
36                 debug("waiting for 5V VCC\n");
37         }
38
39         /* RS232 / RS485 default is RS232 */
40         clrbits_be16(&immap->im_ioport.iop_padat, PA_RS485);
41         clrbits_be16(&immap->im_ioport.iop_papar, PA_RS485);
42         clrbits_be16(&immap->im_ioport.iop_paodr, PA_RS485);
43         setbits_be16(&immap->im_ioport.iop_padir, PA_RS485);
44
45         /* IO Reset min 1 msec */
46         setbits_be16(&immap->im_ioport.iop_padat,
47                                  (PA_RESET_IO_01 | PA_RESET_IO_02));
48         clrbits_be16(&immap->im_ioport.iop_papar,
49                                  (PA_RESET_IO_01 | PA_RESET_IO_02));
50         clrbits_be16(&immap->im_ioport.iop_paodr,
51                                  (PA_RESET_IO_01 | PA_RESET_IO_02));
52         setbits_be16(&immap->im_ioport.iop_padir,
53                                  (PA_RESET_IO_01 | PA_RESET_IO_02));
54         udelay(1000);
55         clrbits_be16(&immap->im_ioport.iop_padat,
56                                  (PA_RESET_IO_01 | PA_RESET_IO_02));
57         return (0);
58 }
59
60 #ifdef CONFIG_IDE_LED
61 void ide_led(uchar led, uchar status)
62 {
63         volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
64
65         /* We have one led for both pcmcia slots */
66         if (status)
67                 clrbits_be16(&immap->im_ioport.iop_padat, PA_LED_YELLOW);
68         else
69                 setbits_be16(&immap->im_ioport.iop_padat, PA_LED_YELLOW);
70 }
71 #endif
72
73 void poweron_key(void)
74 {
75         volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
76
77         clrbits_be16(&immap->im_ioport.iop_pcpar, PC_SWITCH1);
78         clrbits_be16(&immap->im_ioport.iop_pcdir, PC_SWITCH1);
79
80         if (in_be16(&immap->im_ioport.iop_pcdat) & (PC_SWITCH1))
81                 setenv("key1", "off");
82         else
83                 setenv("key1", "on");
84 }