summaryrefslogtreecommitdiff
path: root/libre/uboot-nitrogen6q/6x_bootscript
blob: 45e5fe9b63d6e06448bb2adf1e85de15c707492d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
echo "checking for U-Boot upgrades..";
setenv offset 0x400
if load ${dtype} ${disk}:1 12000000 /boot/u-boot.imx; then
  echo "  found u-boot.imx $filesize bytes)";
  if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000; then
    echo "probed SPI ROM";
    if sf read 0x12400000 $offset $filesize; then
      if cmp.b 0x12000000 0x12400000 $filesize; then
        echo "  no upgrade needed";
      else
        echo "  need U-Boot upgrade, flashing in 5 seconds..";
        for n in 5 4 3 2 1; do
          echo $n;
          sleep 1;
        done
        echo "  erasing flash..";
        sf erase 0 0xC0000;
        # two steps to prevent bricking
        echo "  writing flash..";
        sf write 0x12000000 $offset $filesize;
        echo "  verifying flash..";
        if sf read 0x12400000 $offset $filesize; then
          if cmp.b 0x12000000 0x12400000 $filesize; then
            echo "---- U-Boot upgraded. resetting..";
            reset;
          else
            echo "  read verification error";
          fi
        else
          echo "  error re-reading EEPROM";
        fi
      fi
    else
      echo "  error reading boot loader from EEPROM";
    fi
  else
    echo "  error initializing EEPROM";
  fi;
else
  echo "  no U-Boot image found on SD card";
fi

setenv bootargs
setenv nextcon 0;

if hdmidet ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=hdmi,1280x720M@60,if=RGB24
	setenv fbmem "fbmem=28M";
	setexpr nextcon $nextcon + 1
else
	echo "------ no HDMI monitor";
fi

i2c dev 2
if i2c probe 0x04 ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,LDB-XGA,if=RGB666
	if test "0" -eq $nextcon; then
		setenv fbmem "fbmem=10M";
	else
		setenv fbmem ${fbmem},10M
	fi
	setexpr nextcon $nextcon + 1
else
	echo "------ no Freescale display";
fi

if i2c probe 0x38 ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=ldb,1024x600M@60,if=RGB666
	if test "0" -eq $nextcon; then
		setenv fbmem "fbmem=10M";
	else
		setenv fbmem ${fbmem},10M
	fi
	setexpr nextcon $nextcon + 1
else
	echo "------ no 1024x600 display";
fi

if i2c probe 0x48 ; then
	setenv bootargs $bootargs video=mxcfb${nextcon}:dev=lcd,CLAA-WVGA,if=RGB666
	if test "0" -eq $nextcon; then
		setenv fbmem "fbmem=10M";
	else
		setenv fbmem ${fbmem},10M
	fi
	setexpr nextcon $nextcon + 1
else
	echo "------ no 800x480 display";
fi

while test "3" -ne $nextcon ; do
	setenv bootargs $bootargs video=mxcfb${nextcon}:off ;
	setexpr nextcon $nextcon + 1 ;
done

setenv bootargs $bootargs $fbmem

part uuid ${dtype} ${disk}:1 uuid

setenv bootargs $bootargs console=ttymxc1,115200 vmalloc=400M root=PARTUUID=${uuid} rw rootwait consoleblank=0

setenv fdtfile imx6q-nitrogen6x.dtb
load ${dtype} ${disk}:1 10800000 /boot/vmlinuz-linux-libre && load ${dtype} ${disk}:1 11000000 /boot/dtbs/linux-libre/${fdtfile} && bootz 10800000 - 11000000

load ${dtype} ${disk}:1 10800000 /boot/uImage && bootm 10800000