sconfig: pass in devicetree filename
Instead of forcing the hardcoded 'devicetree.cb' filename under the mainboard directory, this allows mainboards to select a filename for the devicetree file. This allows mainboard variants that need to use different devicetree files to live under the same directory. Change-Id: I761e676ba5d5f70d1fb86656b528f63db169fcef Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/12529 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
052a995567
commit
3205170a2e
|
@ -451,10 +451,10 @@ $(obj)/config.h: $(objutil)/kconfig/conf
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# needed objects that every mainboard uses
|
# needed objects that every mainboard uses
|
||||||
# Creation of these is architecture and mainboard independent
|
# Creation of these is architecture and mainboard independent
|
||||||
$(obj)/mainboard/$(MAINBOARDDIR)/static.c: $(src)/mainboard/$(MAINBOARDDIR)/devicetree.cb $(objutil)/sconfig/sconfig
|
$(obj)/mainboard/$(MAINBOARDDIR)/static.c: $(src)/mainboard/$(MAINBOARDDIR)/$(call strip_quotes, $(CONFIG_DEVICETREE)) $(objutil)/sconfig/sconfig
|
||||||
@printf " SCONFIG $(subst $(src)/,,$(<))\n"
|
@printf " SCONFIG $(subst $(src)/,,$(<))\n"
|
||||||
mkdir -p $(obj)/mainboard/$(MAINBOARDDIR)
|
mkdir -p $(obj)/mainboard/$(MAINBOARDDIR)
|
||||||
$(objutil)/sconfig/sconfig $(MAINBOARDDIR) $(obj)/mainboard/$(MAINBOARDDIR)
|
$(objutil)/sconfig/sconfig $(MAINBOARDDIR) $(obj)/mainboard/$(MAINBOARDDIR) $(call strip_quotes, $(CONFIG_DEVICETREE))
|
||||||
|
|
||||||
ramstage-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c
|
ramstage-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c
|
||||||
romstage-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c
|
romstage-y+=$(obj)/mainboard/$(MAINBOARDDIR)/static.c
|
||||||
|
|
11
src/Kconfig
11
src/Kconfig
|
@ -358,6 +358,17 @@ config BOARD_ID_STRING
|
||||||
This string is placed in the 'board_id' CBFS file for indicating
|
This string is placed in the 'board_id' CBFS file for indicating
|
||||||
board type.
|
board type.
|
||||||
|
|
||||||
|
config DEVICETREE
|
||||||
|
string
|
||||||
|
default "devicetree.cb"
|
||||||
|
help
|
||||||
|
This symbol allows mainboards to select a different file under their
|
||||||
|
mainboard directory for the devicetree.cb file. This allows the board
|
||||||
|
variants that need different devicetrees to be in the same directory.
|
||||||
|
|
||||||
|
Examples: "devicetree.variant.cb"
|
||||||
|
"variant/devicetree.cb"
|
||||||
|
|
||||||
config RAM_CODE_SUPPORT
|
config RAM_CODE_SUPPORT
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -551,7 +551,7 @@ static void inherit_subsystem_ids(FILE *file, struct device *dev)
|
||||||
|
|
||||||
static void usage(void)
|
static void usage(void)
|
||||||
{
|
{
|
||||||
printf("usage: sconfig vendor/mainboard outputdir [-{s|b|k} outputfile]\n");
|
printf("usage: sconfig vendor/mainboard outputdir devicetree [-{s|b|k} outputfile]\n");
|
||||||
printf("\t-s file\tcreate ramstage static device map\n");
|
printf("\t-s file\tcreate ramstage static device map\n");
|
||||||
printf("\t-b file\tcreate bootblock init_mainboard()\n");
|
printf("\t-b file\tcreate bootblock init_mainboard()\n");
|
||||||
printf("\t-k file\tcreate Kconfig devicetree section\n");
|
printf("\t-k file\tcreate Kconfig devicetree section\n");
|
||||||
|
@ -559,27 +559,39 @@ static void usage(void)
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
VENDOR_MAINBOARD_ARG = 1,
|
||||||
|
OUTPUTDIR_ARG,
|
||||||
|
DEVICEFILE_ARG,
|
||||||
|
OUTPUTTYPE_ARG,
|
||||||
|
OUTPUTFILE_ARG
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MIN_ARGS 4
|
||||||
|
#define MAX_ARGS 6
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
if (argc != 3 && argc != 5)
|
if (argc != MIN_ARGS && argc != MAX_ARGS)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
char *mainboard=argv[1];
|
char *mainboard = argv[VENDOR_MAINBOARD_ARG];
|
||||||
char *outputdir=argv[2];
|
char *outputdir = argv[OUTPUTDIR_ARG];
|
||||||
char *devtree=malloc(strlen(mainboard)+30);
|
char *devfile = argv[DEVICEFILE_ARG];
|
||||||
sprintf(devtree, "src/mainboard/%s/devicetree.cb", mainboard);
|
char *devtree = malloc(strlen(mainboard) + strlen(devfile) + 30);
|
||||||
|
sprintf(devtree, "src/mainboard/%s/%s", mainboard, devfile);
|
||||||
char *outputc;
|
char *outputc;
|
||||||
|
|
||||||
if (argc == 3) {
|
if (argc == MIN_ARGS) {
|
||||||
scan_mode = STATIC_MODE;
|
scan_mode = STATIC_MODE;
|
||||||
outputc=malloc(strlen(outputdir)+20);
|
outputc=malloc(strlen(outputdir)+20);
|
||||||
sprintf(outputc, "%s/static.c", outputdir);
|
sprintf(outputc, "%s/static.c", outputdir);
|
||||||
} else if (argc == 5) {
|
} else if (argc == MAX_ARGS) {
|
||||||
if ((argv[3][0] != '-') || (argv[3][2] == 0)) {
|
if ((argv[OUTPUTTYPE_ARG][0] != '-') ||
|
||||||
|
(argv[OUTPUTTYPE_ARG][2] == 0)) {
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (argv[3][1]) {
|
switch (argv[OUTPUTTYPE_ARG][1]) {
|
||||||
case 's':
|
case 's':
|
||||||
scan_mode = STATIC_MODE;
|
scan_mode = STATIC_MODE;
|
||||||
break;
|
break;
|
||||||
|
@ -593,7 +605,7 @@ int main(int argc, char** argv) {
|
||||||
usage();
|
usage();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
char *outputfile=argv[4];
|
char *outputfile = argv[OUTPUTFILE_ARG];
|
||||||
|
|
||||||
outputc=malloc(strlen(outputdir)+strlen(outputfile)+2);
|
outputc=malloc(strlen(outputdir)+strlen(outputfile)+2);
|
||||||
sprintf(outputc, "%s/%s", outputdir, outputfile);
|
sprintf(outputc, "%s/%s", outputdir, outputfile);
|
||||||
|
|
Loading…
Reference in New Issue