14f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin/* 24f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * Copyright (C) 2017 The Android Open Source Project 34f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * 44f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * Licensed under the Apache License, Version 2.0 (the "License"); 54f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * you may not use this file except in compliance with the License. 64f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * You may obtain a copy of the License at 74f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * 84f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * http://www.apache.org/licenses/LICENSE-2.0 94f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * 104f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * Unless required by applicable law or agreed to in writing, software 114f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * distributed under the License is distributed on an "AS IS" BASIS, 124f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * See the License for the specific language governing permissions and 144f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin * limitations under the License. 154f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin */ 164f00eda9fa05364edd719b05b88e4445682eeee5SzuWei Lin 17780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin#ifndef DT_TABLE_H 18780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin#define DT_TABLE_H 19780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 20780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin#include <stdint.h> 21780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 22780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin/* 23780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin * For the image layout, refer README.md for the detail 24780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin */ 25780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 26780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin#define DT_TABLE_MAGIC 0xd7b7ab1e 27780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin#define DT_TABLE_DEFAULT_PAGE_SIZE 2048 28780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 29780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Linstruct dt_table_header { 30780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t magic; /* DT_TABLE_MAGIC */ 31780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t total_size; /* includes dt_table_header + all dt_table_entry 32780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin and all dtb/dtbo */ 33780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t header_size; /* sizeof(dt_table_header) */ 34780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 35780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t dt_entry_size; /* sizeof(dt_table_entry) */ 36780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t dt_entry_count; /* number of dt_table_entry */ 37780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t dt_entries_offset; /* offset to the first dt_table_entry 38780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin from head of dt_table_header. 39780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin The value will be equal to header_size if 40780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin no padding is appended */ 41780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 42780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t page_size; /* flash page size we assume */ 43780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t reserved[1]; /* must be zero */ 44780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin}; 45780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 46780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Linstruct dt_table_entry { 47780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t dt_size; 48780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t dt_offset; /* offset from head of dt_table_header */ 49780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 50780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t id; /* optional, must be zero if unused */ 51780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t rev; /* optional, must be zero if unused */ 52780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin uint32_t custom[4]; /* optional, must be zero if unused */ 53780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin}; 54780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 55780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Linvoid dt_table_header_init(struct dt_table_header *header); 56780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin 57780c3b0fba4bb4dbd39091ebbd1ddc3eacb2deb9SzuWei Lin#endif 58