|
@@ -6,6 +6,7 @@
|
6
|
6
|
|
7
|
7
|
#include <common.h>
|
8
|
8
|
#include <errno.h>
|
|
9
|
+#include <fpga.h>
|
9
|
10
|
#include <image.h>
|
10
|
11
|
#include <linux/libfdt.h>
|
11
|
12
|
#include <spl.h>
|
|
@@ -140,14 +141,6 @@ static int get_aligned_image_size(struct spl_load_info *info, int data_size,
|
140
|
141
|
return (data_size + info->bl_len - 1) / info->bl_len;
|
141
|
142
|
}
|
142
|
143
|
|
143
|
|
-#ifdef CONFIG_SPL_FPGA_SUPPORT
|
144
|
|
-__weak int spl_load_fpga_image(struct spl_load_info *info, size_t length,
|
145
|
|
- int nr_sectors, int sector_offset)
|
146
|
|
-{
|
147
|
|
- return 0;
|
148
|
|
-}
|
149
|
|
-#endif
|
150
|
|
-
|
151
|
144
|
/**
|
152
|
145
|
* spl_load_fit_image(): load the image described in a certain FIT node
|
153
|
146
|
* @info: points to information about the device to load data from
|
|
@@ -169,7 +162,7 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
|
169
|
162
|
void *fit, ulong base_offset, int node,
|
170
|
163
|
struct spl_image_info *image_info)
|
171
|
164
|
{
|
172
|
|
- int offset, sector_offset;
|
|
165
|
+ int offset;
|
173
|
166
|
size_t length;
|
174
|
167
|
int len;
|
175
|
168
|
ulong size;
|
|
@@ -217,16 +210,9 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
|
217
|
210
|
|
218
|
211
|
overhead = get_aligned_image_overhead(info, offset);
|
219
|
212
|
nr_sectors = get_aligned_image_size(info, length, offset);
|
220
|
|
- sector_offset = sector + get_aligned_image_offset(info, offset);
|
221
|
|
-
|
222
|
|
-#ifdef CONFIG_SPL_FPGA_SUPPORT
|
223
|
|
- if (type == IH_TYPE_FPGA) {
|
224
|
|
- return spl_load_fpga_image(info, length, nr_sectors,
|
225
|
|
- sector_offset);
|
226
|
|
- }
|
227
|
|
-#endif
|
228
|
213
|
|
229
|
|
- if (info->read(info, sector_offset,
|
|
214
|
+ if (info->read(info,
|
|
215
|
+ sector + get_aligned_image_offset(info, offset),
|
230
|
216
|
nr_sectors, (void *)load_ptr) != nr_sectors)
|
231
|
217
|
return -EIO;
|
232
|
218
|
|
|
@@ -409,6 +395,18 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
|
409
|
395
|
printf("%s: Cannot load the FPGA: %i\n", __func__, ret);
|
410
|
396
|
return ret;
|
411
|
397
|
}
|
|
398
|
+
|
|
399
|
+ debug("FPGA bitstream at: %x, size: %x\n",
|
|
400
|
+ (u32)spl_image->load_addr, spl_image->size);
|
|
401
|
+
|
|
402
|
+ ret = fpga_load(0, (const void *)spl_image->load_addr,
|
|
403
|
+ spl_image->size, BIT_FULL);
|
|
404
|
+ if (ret) {
|
|
405
|
+ printf("%s: Cannot load the image to the FPGA\n",
|
|
406
|
+ __func__);
|
|
407
|
+ return ret;
|
|
408
|
+ }
|
|
409
|
+
|
412
|
410
|
puts("FPGA image loaded from FIT\n");
|
413
|
411
|
node = -1;
|
414
|
412
|
}
|