]>
Commit | Line | Data |
---|---|---|
18a00dfd | 1 | /* |
f905432c | 2 | * Voipac PXA270 Support |
18a00dfd | 3 | * |
f905432c | 4 | * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com> |
18a00dfd | 5 | * |
1a459660 | 6 | * SPDX-License-Identifier: GPL-2.0+ |
18a00dfd MV |
7 | */ |
8 | ||
9 | #include <common.h> | |
10 | #include <asm/arch/hardware.h> | |
5d877f42 | 11 | #include <asm/arch/regs-mmc.h> |
4438a45f | 12 | #include <asm/arch/pxa.h> |
c7e61334 | 13 | #include <netdev.h> |
3ba8bf7c MV |
14 | #include <serial.h> |
15 | #include <asm/io.h> | |
16297cfb | 16 | #include <usb.h> |
18a00dfd MV |
17 | |
18 | DECLARE_GLOBAL_DATA_PTR; | |
19 | ||
18a00dfd MV |
20 | /* |
21 | * Miscelaneous platform dependent initialisations | |
22 | */ | |
f905432c | 23 | int board_init(void) |
18a00dfd | 24 | { |
720a650c MV |
25 | /* We have RAM, disable cache */ |
26 | dcache_disable(); | |
27 | icache_disable(); | |
28 | ||
18a00dfd MV |
29 | /* memory and cpu-speed are setup before relocation */ |
30 | /* so we do _nothing_ here */ | |
31 | ||
f905432c | 32 | /* Arch number of vpac270 */ |
18a00dfd MV |
33 | gd->bd->bi_arch_number = MACH_TYPE_VPAC270; |
34 | ||
35 | /* adress of boot parameters */ | |
36 | gd->bd->bi_boot_params = 0xa0000100; | |
37 | ||
38 | return 0; | |
39 | } | |
40 | ||
f905432c | 41 | int dram_init(void) |
6ef6eb91 | 42 | { |
411b9eaf | 43 | #ifndef CONFIG_ONENAND |
f68d2a22 | 44 | pxa2xx_dram_init(); |
411b9eaf | 45 | #endif |
6ef6eb91 | 46 | gd->ram_size = PHYS_SDRAM_1_SIZE; |
6ef6eb91 MV |
47 | return 0; |
48 | } | |
49 | ||
50 | void dram_init_banksize(void) | |
f905432c MV |
51 | { |
52 | gd->bd->bi_dram[0].start = PHYS_SDRAM_1; | |
18a00dfd | 53 | gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; |
18a00dfd | 54 | |
f97e9c65 | 55 | #ifdef CONFIG_RAM_256M |
f905432c MV |
56 | gd->bd->bi_dram[1].start = PHYS_SDRAM_2; |
57 | gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE; | |
58 | #endif | |
18a00dfd MV |
59 | } |
60 | ||
5d877f42 MV |
61 | #ifdef CONFIG_CMD_MMC |
62 | int board_mmc_init(bd_t *bis) | |
63 | { | |
64 | pxa_mmc_register(0); | |
65 | return 0; | |
66 | } | |
67 | #endif | |
68 | ||
f905432c | 69 | #ifdef CONFIG_CMD_USB |
bba67914 | 70 | int board_usb_init(int index, enum usb_init_type init) |
18a00dfd | 71 | { |
3ba8bf7c MV |
72 | writel((UHCHR | UHCHR_PCPL | UHCHR_PSPL) & |
73 | ~(UHCHR_SSEP0 | UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE), | |
74 | UHCHR); | |
18a00dfd | 75 | |
3ba8bf7c | 76 | writel(readl(UHCHR) | UHCHR_FSBIR, UHCHR); |
18a00dfd | 77 | |
3ba8bf7c MV |
78 | while (readl(UHCHR) & UHCHR_FSBIR) |
79 | ; | |
18a00dfd | 80 | |
3ba8bf7c MV |
81 | writel(readl(UHCHR) & ~UHCHR_SSE, UHCHR); |
82 | writel((UHCHIE_UPRIE | UHCHIE_RWIE), UHCHIE); | |
18a00dfd MV |
83 | |
84 | /* Clear any OTG Pin Hold */ | |
3ba8bf7c MV |
85 | if (readl(PSSR) & PSSR_OTGPH) |
86 | writel(readl(PSSR) | PSSR_OTGPH, PSSR); | |
18a00dfd | 87 | |
3ba8bf7c MV |
88 | writel(readl(UHCRHDA) & ~(0x200), UHCRHDA); |
89 | writel(readl(UHCRHDA) | 0x100, UHCRHDA); | |
18a00dfd MV |
90 | |
91 | /* Set port power control mask bits, only 3 ports. */ | |
3ba8bf7c | 92 | writel(readl(UHCRHDB) | (0x7<<17), UHCRHDB); |
18a00dfd MV |
93 | |
94 | /* enable port 2 */ | |
3ba8bf7c MV |
95 | writel(readl(UP2OCR) | UP2OCR_HXOE | UP2OCR_HXS | |
96 | UP2OCR_DMPDE | UP2OCR_DPPDE, UP2OCR); | |
18a00dfd MV |
97 | |
98 | return 0; | |
99 | } | |
100 | ||
bba67914 | 101 | int board_usb_cleanup(int index, enum usb_init_type init) |
18a00dfd | 102 | { |
16297cfb | 103 | return 0; |
18a00dfd MV |
104 | } |
105 | ||
106 | void usb_board_stop(void) | |
107 | { | |
3ba8bf7c | 108 | writel(readl(UHCHR) | UHCHR_FHR, UHCHR); |
18a00dfd | 109 | udelay(11); |
3ba8bf7c | 110 | writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR); |
18a00dfd | 111 | |
3ba8bf7c | 112 | writel(readl(UHCCOMS) | 1, UHCCOMS); |
18a00dfd MV |
113 | udelay(10); |
114 | ||
3ba8bf7c | 115 | writel(readl(CKEN) & ~CKEN10_USBHOST, CKEN); |
18a00dfd MV |
116 | |
117 | return; | |
118 | } | |
f905432c | 119 | #endif |
18a00dfd MV |
120 | |
121 | #ifdef CONFIG_DRIVER_DM9000 | |
122 | int board_eth_init(bd_t *bis) | |
123 | { | |
124 | return dm9000_initialize(bis); | |
125 | } | |
126 | #endif |