1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#include <common.h>
25#include <mpc8xx.h>
26#include "kup.h"
27#include <asm/io.h>
28
29
30int 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
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
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
61void ide_led(uchar led, uchar status)
62{
63 volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
64
65
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
73void 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}
85