]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/matrix_vision/mergerbox/sm107.c
Merge branch 'u-boot/master' into u-boot-arm/master
[karo-tx-uboot.git] / board / matrix_vision / mergerbox / sm107.c
1 /*
2  * Copyright (C) 2011 Matrix Vision GmbH
3  * Andre Schwarz <andre.schwarz@matrix-vision.de>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #include <common.h>
9 #include <asm/io.h>
10 #include <ns16550.h>
11 #include <netdev.h>
12 #include <sm501.h>
13 #include <pci.h>
14 #include "../common/mv_common.h"
15
16 #ifdef CONFIG_VIDEO
17 static const SMI_REGS init_regs_800x480[] = {
18         /* set endianess to little endian */
19         {0x0005c, 0x00000000},
20         /* PCI drive 12mA */
21         {0x00004, 0x42401001},
22         /* current clock */
23         {0x0003c, 0x310a1818},
24         /* clocks for pm0... */
25         {0x00040, 0x0002184f},
26         {0x00044, 0x2a1a0a01},
27         /* GPIO */
28         {0x10008, 0x00000000},
29         {0x1000C, 0x00000000},
30         /* panel control regs */
31         {0x80000, 0x0f017106},
32         {0x80004, 0x0},
33         {0x80008, 0x0},
34         {0x8000C, 0x00000000},
35         {0x80010, 0x0c800c80},
36         /* width 0x320 */
37         {0x80014, 0x03200000},
38         /* height 0x1e0 */
39         {0x80018, 0x01E00000},
40         {0x8001C, 0x0},
41         {0x80020, 0x01df031f},
42         {0x80024, 0x041f031f},
43         {0x80028, 0x00800347},
44         {0x8002C, 0x020c01df},
45         {0x80030, 0x000201e9},
46         {0x80200, 0x00000000},
47         /* ZV[0:7] */
48         {0x00008, 0x00ff0000},
49         /* 24-Bit TFT */
50         {0x0000c, 0x3f000000},
51         {0, 0}
52 };
53
54 /*
55  * Returns SM107 register base address. First thing called in the driver.
56  */
57 unsigned int board_video_init(void)
58 {
59         pci_dev_t devbusfn;
60         u32 addr;
61
62         devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
63         if (devbusfn != -1) {
64                 pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_1,
65                         (u32 *)&addr);
66                 return addr & 0xfffffffe;
67         }
68
69         return 0;
70 }
71
72 /*
73  * Called after initializing the SM501 and before clearing the screen.
74  */
75 void board_validate_screen(unsigned int base)
76 {
77 }
78
79 /*
80  * Returns SM107 framebuffer address
81  */
82 unsigned int board_video_get_fb(void)
83 {
84         pci_dev_t devbusfn;
85         u32 addr;
86
87         devbusfn = pci_find_device(PCI_VENDOR_SM, PCI_DEVICE_SM501, 0);
88         if (devbusfn != -1) {
89                 pci_read_config_dword(devbusfn, PCI_BASE_ADDRESS_0,
90                         (u32 *)&addr);
91                 addr &= 0xfffffffe;
92 #ifdef CONFIG_VIDEO_SM501_FBMEM_OFFSET
93                 addr += CONFIG_VIDEO_SM501_FBMEM_OFFSET;
94 #endif
95                 return addr;
96         }
97
98         printf("board_video_get_fb(): FAILED\n");
99
100         return 0;
101 }
102
103 /*
104  * Return a pointer to the initialization sequence.
105  */
106 const SMI_REGS *board_get_regs(void)
107 {
108         return init_regs_800x480;
109 }
110
111 int board_get_width(void)
112 {
113         return 800;
114 }
115
116 int board_get_height(void)
117 {
118         return 480;
119 }
120 #endif