Skip to content

Commit

Permalink
of/lib: Allow scripts/dtc/libfdt to be used from kernel code
Browse files Browse the repository at this point in the history
libfdt is part of the device tree support in scripts/dtc/libfdt.  For
some platforms that use the Device Tree, we want to be able to edit
the flattened device tree form.

We don't want to burden kernel builds that do not require it, so we
gate compilation of libfdt files with CONFIG_LIBFDT.  So if it is
needed, you need to do this in your Kconfig:

	select LIBFDT

And in the Makefile of the code using libfdt something like:

ccflags-y := -I$(src)/../../../scripts/dtc/libfdt

Signed-off-by: David Daney <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Grant Likely <[email protected]>
Cc: [email protected]
Acked-by: Rob Herring <[email protected]>
Signed-off-by: Ralf Baechle <[email protected]>
  • Loading branch information
daviddaney authored and ralfbaechle committed Jul 23, 2012
1 parent a339aef commit ab25383
Show file tree
Hide file tree
Showing 10 changed files with 44 additions and 0 deletions.
8 changes: 8 additions & 0 deletions include/linux/libfdt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#ifndef _INCLUDE_LIBFDT_H_
#define _INCLUDE_LIBFDT_H_

#include <linux/libfdt_env.h>
#include "../../scripts/dtc/libfdt/fdt.h"
#include "../../scripts/dtc/libfdt/libfdt.h"

#endif /* _INCLUDE_LIBFDT_H_ */
13 changes: 13 additions & 0 deletions include/linux/libfdt_env.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef _LIBFDT_ENV_H
#define _LIBFDT_ENV_H

#include <linux/string.h>

#include <asm/byteorder.h>

#define fdt32_to_cpu(x) be32_to_cpu(x)
#define cpu_to_fdt32(x) cpu_to_be32(x)
#define fdt64_to_cpu(x) be64_to_cpu(x)
#define cpu_to_fdt64(x) cpu_to_be64(x)

#endif /* _LIBFDT_ENV_H */
6 changes: 6 additions & 0 deletions lib/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -395,4 +395,10 @@ config SIGNATURE
Digital signature verification. Currently only RSA is supported.
Implementation is done using GnuPG MPI library

#
# libfdt files, only selected if needed.
#
config LIBFDT
bool

endmenu
5 changes: 5 additions & 0 deletions lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,11 @@ obj-$(CONFIG_GENERIC_STRNLEN_USER) += strnlen_user.o

obj-$(CONFIG_STMP_DEVICE) += stmp_device.o

libfdt_files = fdt.o fdt_ro.o fdt_wip.o fdt_rw.o fdt_sw.o fdt_strerror.o
$(foreach file, $(libfdt_files), \
$(eval CFLAGS_$(file) = -I$(src)/../scripts/dtc/libfdt))
lib-$(CONFIG_LIBFDT) += $(libfdt_files)

hostprogs-y := gen_crc32table
clean-files := crc32table.h

Expand Down
2 changes: 2 additions & 0 deletions lib/fdt.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include <linux/libfdt_env.h>
#include "../scripts/dtc/libfdt/fdt.c"
2 changes: 2 additions & 0 deletions lib/fdt_ro.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include <linux/libfdt_env.h>
#include "../scripts/dtc/libfdt/fdt_ro.c"
2 changes: 2 additions & 0 deletions lib/fdt_rw.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include <linux/libfdt_env.h>
#include "../scripts/dtc/libfdt/fdt_rw.c"
2 changes: 2 additions & 0 deletions lib/fdt_strerror.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include <linux/libfdt_env.h>
#include "../scripts/dtc/libfdt/fdt_strerror.c"
2 changes: 2 additions & 0 deletions lib/fdt_sw.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include <linux/libfdt_env.h>
#include "../scripts/dtc/libfdt/fdt_sw.c"
2 changes: 2 additions & 0 deletions lib/fdt_wip.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include <linux/libfdt_env.h>
#include "../scripts/dtc/libfdt/fdt_wip.c"

0 comments on commit ab25383

Please sign in to comment.