blob: 41c50bc876ee03801d8ea8086b3cf7f006dbf61a [file] [log] [blame]
Bin Mengf17cea62015-04-24 18:10:04 +08001/*
2 * Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#include <common.h>
Simon Glass07e922a2015-04-28 20:25:10 -06008#include <asm/sfi.h>
Bin Mengf17cea62015-04-24 18:10:04 +08009#include <asm/tables.h>
10
11u8 table_compute_checksum(void *v, int len)
12{
13 u8 *bytes = v;
14 u8 checksum = 0;
15 int i;
16
17 for (i = 0; i < len; i++)
18 checksum -= bytes[i];
19
20 return checksum;
21}
22
Bin Mengf91cf6b2015-06-23 12:18:51 +080023void table_fill_string(char *dest, const char *src, size_t n, char pad)
24{
25 int start, len;
26 int i;
27
28 strncpy(dest, src, n);
29
30 /* Fill the remaining bytes with pad */
31 len = strlen(src);
32 start = len < n ? len : n;
33 for (i = start; i < n; i++)
34 dest[i] = pad;
35}
36
Bin Mengf17cea62015-04-24 18:10:04 +080037void write_tables(void)
38{
39 u32 __maybe_unused rom_table_end = ROM_TABLE_ADDR;
40
Bin Meng7b730902015-04-28 18:37:03 +080041#ifdef CONFIG_GENERATE_PIRQ_TABLE
Bin Mengf17cea62015-04-24 18:10:04 +080042 rom_table_end = write_pirq_routing_table(rom_table_end);
43 rom_table_end = ALIGN(rom_table_end, 1024);
44#endif
Simon Glass07e922a2015-04-28 20:25:10 -060045#ifdef CONFIG_GENERATE_SFI_TABLE
46 rom_table_end = write_sfi_table(rom_table_end);
47 rom_table_end = ALIGN(rom_table_end, 1024);
48#endif
Bin Mengf17cea62015-04-24 18:10:04 +080049}