~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/u-boot/board/davinci/sonata/board_init.S

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
 
3
 *
 
4
 * Board-specific low level initialization code. Called at the very end
 
5
 * of arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S. Just returns if there is no
 
6
 * initialization required.
 
7
 *
 
8
 * For _OLDER_ Sonata boards sets up GPIO4 to control NAND WP line. Newer
 
9
 * Sonata boards, AFAIK, don't use this so it's just return by default. Ask
 
10
 * Visioneering if they reinvented the wheel once again to make sure :)
 
11
 *
 
12
 * SPDX-License-Identifier:     GPL-2.0+
 
13
 */
 
14
 
 
15
#include <config.h>
 
16
 
 
17
.globl  dv_board_init
 
18
dv_board_init:
 
19
#ifdef SONATA_BOARD_GPIOWP
 
20
        /* Set PINMUX0 to enable GPIO4 */
 
21
        ldr     r0, _PINMUX0
 
22
        ldr     r1, GPIO4_EN_MASK
 
23
        ldr     r2, [r0]
 
24
        and     r2, r2, r1
 
25
        str     r2, [r0]
 
26
 
 
27
        /* Enable GPIO LPSC module */
 
28
        ldr     r0, PTSTAT
 
29
 
 
30
gpio_ptstat_loop1:
 
31
        ldr     r2, [r0]
 
32
        tst     r2, $0x00000001
 
33
        bne     gpio_ptstat_loop1
 
34
 
 
35
        ldr     r1, MDCTL_GPIO
 
36
        ldr     r2, [r1]
 
37
        and     r2, r2, $0xfffffff8
 
38
        orr     r2, r2, $0x00000003
 
39
        str     r2, [r1]
 
40
 
 
41
        orr     r2, r2, $0x00000200
 
42
        str     r2, [r1]
 
43
 
 
44
        ldr     r1, PTCMD
 
45
        mov     r2, $0x00000001
 
46
        str     r2, [r1]
 
47
 
 
48
gpio_ptstat_loop2:
 
49
        ldr     r2, [r0]
 
50
        tst     r2, $0x00000001
 
51
        bne     gpio_ptstat_loop2
 
52
 
 
53
        ldr     r0, MDSTAT_GPIO
 
54
gpio_mdstat_loop:
 
55
        ldr     r2, [r0]
 
56
        and     r2, r2, $0x0000001f
 
57
        teq     r2, $0x00000003
 
58
        bne     gpio_mdstat_loop
 
59
 
 
60
        /* GPIO4 -> output */
 
61
        ldr     r0, GPIO_DIR01
 
62
        mov     r1, $0x10
 
63
        ldr     r2, [r0]
 
64
        bic     r2, r2, r0
 
65
        str     r2, [r0]
 
66
 
 
67
        /* Set it to 0 (Write Protect) */
 
68
        ldr     r0, GPIO_CLR_DATA01
 
69
        str     r1, [r0]
 
70
#endif
 
71
 
 
72
        mov     pc, lr
 
73
 
 
74
#ifdef SONATA_BOARD_GPIOWP
 
75
.ltorg
 
76
 
 
77
GPIO4_EN_MASK:
 
78
        .word   0xf77fffff
 
79
MDCTL_GPIO:
 
80
        .word   0x01c41a68
 
81
MDSTAT_GPIO:
 
82
        .word   0x01c41868
 
83
GPIO_DIR01:
 
84
        .word   0x01c67010
 
85
GPIO_CLR_DATA01:
 
86
        .word   0x01c6701c
 
87
#endif