Hi Simon, On 06.02.2021 17:21, Simon Glass wrote: > On Thu, 4 Feb 2021 at 03:36, Marek Szyprowski <m.szyprow...@samsung.com> > wrote: >> ... >> Could you give me a bit more hints or point where to start? I've tried >> to build sandbox, but it fails for v2021.01 release (I've did make >> sandbox_defconfig && make all). I assume I would need to add adc and >> adc-keys devices to some sandbox dts and some code triggering and >> checking the key values, but that's all I know now. > Well you do need to be able to build sandbox or you will get > nowhere...what error did you get? Once we understand what went wrong > we can update the docs. Maybe it is missing a dependency.
$ gcc --version gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ git checkout v2021.01 $ make sandbox_defconfig # # configuration written to .config # $ make scripts/kconfig/conf --syncconfig Kconfig CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFGCHK u-boot.cfg UPD include/generated/timestamp_autogenerated.h HOSTCC tools/mkenvimage.o HOSTLD tools/mkenvimage HOSTCC tools/fit_image.o HOSTCC tools/image-host.o HOSTCC tools/dumpimage.o HOSTLD tools/dumpimage HOSTCC tools/mkimage.o HOSTLD tools/mkimage HOSTLD tools/fit_info HOSTLD tools/fit_check_sign ... CC arch/sandbox/cpu/cpu.o In file included from include/common.h:26:0, from arch/sandbox/cpu/cpu.c:6: include/asm/global_data.h:112:58: warning: call-clobbered register used for global register variable #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r9") ^ include/dm/of.h:86:1: note: in expansion of macro ‘DECLARE_GLOBAL_DATA_PTR’ DECLARE_GLOBAL_DATA_PTR; ^~~~~~~~~~~~~~~~~~~~~~~ In file included from arch/sandbox/cpu/cpu.c:18:0: ./arch/sandbox/include/asm/state.h:98:30: error: ‘CONFIG_SANDBOX_SPI_MAX_BUS’ undeclared here (not in a function); did you mean ‘CONFIG_SANDBOX_SPI’? struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS] ^~~~~~~~~~~~~~~~~~~~~~~~~~ CONFIG_SANDBOX_SPI ./arch/sandbox/include/asm/state.h:99:7: error: ‘CONFIG_SANDBOX_SPI_MAX_CS’ undeclared here (not in a function); did you mean ‘CONFIG_SANDBOX_SPI_MAX_BUS’? [CONFIG_SANDBOX_SPI_MAX_CS]; ^~~~~~~~~~~~~~~~~~~~~~~~~ CONFIG_SANDBOX_SPI_MAX_BUS arch/sandbox/cpu/cpu.c: In function ‘is_in_sandbox_mem’: arch/sandbox/cpu/cpu.c:83:41: error: ‘volatile struct arch_global_data’ has no member named ‘ram_buf’ return (const uint8_t *)ptr >= gd->arch.ram_buf && ^ arch/sandbox/cpu/cpu.c:84:34: error: ‘volatile struct arch_global_data’ has no member named ‘ram_buf’ (const uint8_t *)ptr < gd->arch.ram_buf + gd->ram_size; ^ arch/sandbox/cpu/cpu.c: At top level: arch/sandbox/cpu/cpu.c:97:7: error: redefinition of ‘phys_to_virt’ void *phys_to_virt(phys_addr_t paddr) ^~~~~~~~~~~~ In file included from include/asm/io.h:495:0, from arch/sandbox/cpu/cpu.c:15: include/asm-generic/io.h:30:21: note: previous definition of ‘phys_to_virt’ was here static inline void *phys_to_virt(phys_addr_t paddr) ^~~~~~~~~~~~ arch/sandbox/cpu/cpu.c: In function ‘phys_to_virt’: arch/sandbox/cpu/cpu.c:104:27: error: ‘volatile struct arch_global_data’ has no member named ‘ram_buf’ return (void *)(gd->arch.ram_buf + paddr); ^ In file included from include/linux/posix_types.h:4:0, from include/linux/types.h:4, from include/time.h:7, from include/common.h:18, from arch/sandbox/cpu/cpu.c:6: include/linux/stddef.h:17:33: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ^ include/linux/kernel.h:274:29: note: in expansion of macro ‘offsetof’ (type *)( (char *)__mptr - offsetof(type,member) );}) ^~~~~~~~ include/linux/list.h:327:2: note: in expansion of macro ‘container_of’ container_of(ptr, type, member) ^~~~~~~~~~~~ include/linux/list.h:424:13: note: in expansion of macro ‘list_entry’ for (pos = list_entry((head)->next, typeof(*pos), member); \ ^~~~~~~~~~ arch/sandbox/cpu/cpu.c:111:2: note: in expansion of macro ‘list_for_each_entry’ list_for_each_entry(mentry, &state->mapmem_head, sibling_node) { ^~~~~~~~~~~~~~~~~~~ include/linux/stddef.h:17:33: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ^ include/linux/kernel.h:274:29: note: in expansion of macro ‘offsetof’ (type *)( (char *)__mptr - offsetof(type,member) );}) ^~~~~~~~ include/linux/list.h:327:2: note: in expansion of macro ‘container_of’ container_of(ptr, type, member) ^~~~~~~~~~~~ include/linux/list.h:426:13: note: in expansion of macro ‘list_entry’ pos = list_entry(pos->member.next, typeof(*pos), member)) ^~~~~~~~~~ arch/sandbox/cpu/cpu.c:111:2: note: in expansion of macro ‘list_for_each_entry’ list_for_each_entry(mentry, &state->mapmem_head, sibling_node) { ^~~~~~~~~~~~~~~~~~~ arch/sandbox/cpu/cpu.c: In function ‘find_tag’: include/linux/stddef.h:17:33: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ^ include/linux/kernel.h:274:29: note: in expansion of macro ‘offsetof’ (type *)( (char *)__mptr - offsetof(type,member) );}) ^~~~~~~~ include/linux/list.h:327:2: note: in expansion of macro ‘container_of’ container_of(ptr, type, member) ^~~~~~~~~~~~ include/linux/list.h:424:13: note: in expansion of macro ‘list_entry’ for (pos = list_entry((head)->next, typeof(*pos), member); \ ^~~~~~~~~~ arch/sandbox/cpu/cpu.c:132:2: note: in expansion of macro ‘list_for_each_entry’ list_for_each_entry(mentry, &state->mapmem_head, sibling_node) { ^~~~~~~~~~~~~~~~~~~ include/linux/stddef.h:17:33: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ^ include/linux/kernel.h:274:29: note: in expansion of macro ‘offsetof’ (type *)( (char *)__mptr - offsetof(type,member) );}) ^~~~~~~~ include/linux/list.h:327:2: note: in expansion of macro ‘container_of’ container_of(ptr, type, member) ^~~~~~~~~~~~ include/linux/list.h:426:13: note: in expansion of macro ‘list_entry’ pos = list_entry(pos->member.next, typeof(*pos), member)) ^~~~~~~~~~ arch/sandbox/cpu/cpu.c:132:2: note: in expansion of macro ‘list_for_each_entry’ list_for_each_entry(mentry, &state->mapmem_head, sibling_node) { ^~~~~~~~~~~~~~~~~~~ arch/sandbox/cpu/cpu.c: At top level: arch/sandbox/cpu/cpu.c:142:13: error: redefinition of ‘virt_to_phys’ phys_addr_t virt_to_phys(void *ptr) ^~~~~~~~~~~~ In file included from include/asm/io.h:495:0, from arch/sandbox/cpu/cpu.c:15: include/asm-generic/io.h:46:27: note: previous definition of ‘virt_to_phys’ was here static inline phys_addr_t virt_to_phys(void *vaddr) ^~~~~~~~~~~~ arch/sandbox/cpu/cpu.c: In function ‘virt_to_phys’: arch/sandbox/cpu/cpu.c:151:49: error: ‘volatile struct arch_global_data’ has no member named ‘ram_buf’ return (phys_addr_t)((uint8_t *)ptr - gd->arch.ram_buf); ^ arch/sandbox/cpu/cpu.c: At top level: arch/sandbox/cpu/cpu.c:165:7: error: redefinition of ‘map_physmem’ void *map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags) ^~~~~~~~~~~ In file included from include/asm/io.h:495:0, from arch/sandbox/cpu/cpu.c:15: include/asm-generic/io.h:86:21: note: previous definition of ‘map_physmem’ was here static inline void *map_physmem(phys_addr_t paddr, unsigned long len, ^~~~~~~~~~~ arch/sandbox/cpu/cpu.c: In function ‘map_physmem’: arch/sandbox/cpu/cpu.c:172:25: warning: implicit declaration of function ‘pci_map_physmem’; did you mean ‘map_physmem’? [-Wimplicit-function-declaration] if (enable_pci_map && !pci_map_physmem(paddr, &len, &map_dev, &ptr)) { ^~~~~~~~~~~~~~~ map_physmem arch/sandbox/cpu/cpu.c: At top level: arch/sandbox/cpu/cpu.c:185:6: error: conflicting types for ‘unmap_physmem’ void unmap_physmem(const void *ptr, unsigned long flags) ^~~~~~~~~~~~~ In file included from include/asm/io.h:495:0, from arch/sandbox/cpu/cpu.c:15: include/asm-generic/io.h:103:20: note: previous definition of ‘unmap_physmem’ was here static inline void unmap_physmem(void *vaddr, unsigned long flags) ^~~~~~~~~~~~~ arch/sandbox/cpu/cpu.c: In function ‘unmap_physmem’: arch/sandbox/cpu/cpu.c:189:3: warning: implicit declaration of function ‘pci_unmap_physmem’; did you mean ‘unmap_physmem’? [-Wimplicit-function-declaration] pci_unmap_physmem(ptr, map_len, map_dev); ^~~~~~~~~~~~~~~~~ unmap_physmem arch/sandbox/cpu/cpu.c: In function ‘map_to_sysmem’: arch/sandbox/cpu/cpu.c:204:30: error: ‘volatile struct arch_global_data’ has no member named ‘ram_buf’ return (u8 *)ptr - gd->arch.ram_buf; ^ arch/sandbox/cpu/cpu.c: At top level: arch/sandbox/cpu/cpu.c:233:50: warning: ‘enum sandboxio_size_t’ declared inside parameter list will not be visible outside of this definition or declaration unsigned int sandbox_read(const void *addr, enum sandboxio_size_t size) ^~~~~~~~~~~~~~~~ arch/sandbox/cpu/cpu.c:233:67: error: parameter 2 (‘size’) has incomplete type unsigned int sandbox_read(const void *addr, enum sandboxio_size_t size) ^~~~ arch/sandbox/cpu/cpu.c:233:14: warning: function declaration isn’t a prototype [-Wstrict-prototypes] unsigned int sandbox_read(const void *addr, enum sandboxio_size_t size) ^~~~~~~~~~~~ arch/sandbox/cpu/cpu.c: In function ‘sandbox_read’: arch/sandbox/cpu/cpu.c:241:7: error: ‘SB_SIZE_8’ undeclared (first use in this function); did you mean ‘PCI_SIZE_8’? case SB_SIZE_8: ^~~~~~~~~ PCI_SIZE_8 arch/sandbox/cpu/cpu.c:241:7: note: each undeclared identifier is reported only once for each function it appears in arch/sandbox/cpu/cpu.c:243:7: error: ‘SB_SIZE_16’ undeclared (first use in this function); did you mean ‘SB_SIZE_8’? case SB_SIZE_16: ^~~~~~~~~~ SB_SIZE_8 arch/sandbox/cpu/cpu.c:245:7: error: ‘SB_SIZE_32’ undeclared (first use in this function); did you mean ‘SB_SIZE_16’? case SB_SIZE_32: ^~~~~~~~~~ SB_SIZE_16 arch/sandbox/cpu/cpu.c:247:7: error: ‘SB_SIZE_64’ undeclared (first use in this function); did you mean ‘SB_SIZE_32’? case SB_SIZE_64: ^~~~~~~~~~ SB_SIZE_32 arch/sandbox/cpu/cpu.c: At top level: arch/sandbox/cpu/cpu.c:254:55: warning: ‘enum sandboxio_size_t’ declared inside parameter list will not be visible outside of this definition or declaration void sandbox_write(void *addr, unsigned int val, enum sandboxio_size_t size) ^~~~~~~~~~~~~~~~ arch/sandbox/cpu/cpu.c:254:72: error: parameter 3 (‘size’) has incomplete type void sandbox_write(void *addr, unsigned int val, enum sandboxio_size_t size) ^~~~ arch/sandbox/cpu/cpu.c:254:6: warning: function declaration isn’t a prototype [-Wstrict-prototypes] void sandbox_write(void *addr, unsigned int val, enum sandboxio_size_t size) ^~~~~~~~~~~~~ arch/sandbox/cpu/cpu.c: In function ‘sandbox_write’: arch/sandbox/cpu/cpu.c:262:7: error: ‘SB_SIZE_8’ undeclared (first use in this function); did you mean ‘PCI_SIZE_8’? case SB_SIZE_8: ^~~~~~~~~ PCI_SIZE_8 arch/sandbox/cpu/cpu.c:265:7: error: ‘SB_SIZE_16’ undeclared (first use in this function); did you mean ‘SB_SIZE_8’? case SB_SIZE_16: ^~~~~~~~~~ SB_SIZE_8 arch/sandbox/cpu/cpu.c:268:7: error: ‘SB_SIZE_32’ undeclared (first use in this function); did you mean ‘SB_SIZE_16’? case SB_SIZE_32: ^~~~~~~~~~ SB_SIZE_16 arch/sandbox/cpu/cpu.c:271:7: error: ‘SB_SIZE_64’ undeclared (first use in this function); did you mean ‘SB_SIZE_32’? case SB_SIZE_64: ^~~~~~~~~~ SB_SIZE_32 arch/sandbox/cpu/cpu.c: In function ‘sandbox_read_fdt_from_file’: arch/sandbox/cpu/cpu.c:306:9: warning: implicit declaration of function ‘map_sysmem’; did you mean ‘map_physmem’? [-Wimplicit-function-declaration] blob = map_sysmem(CONFIG_SYS_FDT_LOAD_ADDR, 0); ^~~~~~~~~~ map_physmem arch/sandbox/cpu/cpu.c:306:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion] blob = map_sysmem(CONFIG_SYS_FDT_LOAD_ADDR, 0); ^ arch/sandbox/cpu/cpu.c: In function ‘is_in_sandbox_mem’: arch/sandbox/cpu/cpu.c:85:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ scripts/Makefile.build:265: recipe for target 'arch/sandbox/cpu/cpu.o' failed make[1]: *** [arch/sandbox/cpu/cpu.o] Error 1 Makefile:1784: recipe for target 'arch/sandbox/cpu' failed make: *** [arch/sandbox/cpu] Error 2 Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland