1 /*********************************************************************
2  *
3  *   LPC Parts identification
4  *
5  *
6  *  Copyright (C) 2012 Nathael Pajani <nathael.pajani@nathael.net>
7  *
8  *  This program is free software: you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation, either version 3 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  *
21  *********************************************************************/
23 #ifndef FIND_PART_H
24 #define FIND_PART_H
26 #include <stdint.h> /* uint64_t and uint32_t */
28 #define PART_NAME_LENGTH  25
30 /* Part descriptor */
31 /* ALL data below name MUST be of type uint32_t */
32 struct part_desc {
33         uint64_t part_id;
34         char* name;
35         uint32_t pad;
36         /* Flash */
37         uint32_t flash_base;
38         uint32_t flash_size;
39         uint32_t flash_nb_sectors;
40         uint32_t reset_vector_offset;
41         /* RAM */
42         uint32_t ram_base;
43         uint32_t ram_size;
44         uint32_t ram_buff_offset; /* Used to transfer data for flashing */
45         uint32_t ram_buff_size;
46         uint32_t uuencode;
47 };
49 /* When looking for parts description in a file ee do allocate (malloc) two memory
50  *   chunks which we will never free.
51  * The user should free part_desc->name and part_desc when they are no more useful
52  */
53 struct part_desc* find_part_in_file(uint64_t dev_id, char* conf_file_name);
55 /* Find a part in the internal parts table */
56 /* FIXME : To be inplemented ? */
57 struct part_desc* find_part_internal_tab(uint64_t dev_id);
59 #endif /* FIND_PART_H */