On 2/21/2014 10:22 AM, Warner Losh wrote:
> 
> On Feb 19, 2014, at 9:58 PM, Frank Rowand wrote:
> 
>> On 2/19/2014 1:15 PM, Grant Likely wrote:
>>> On Wed, Feb 19, 2014 at 8:16 PM, Frank Rowand <[email protected]> 
>>> wrote:
>>>> On 2/19/2014 1:08 AM, Sascha Hauer wrote:
>>>>> On Tue, Feb 18, 2014 at 02:44:15PM -0800, Tim Bird wrote:
>>>>>> I'm not in favor of separating the device tree information from the 
>>>>>> kernel.
>>>>>>
>>>>>> If we switch, then whatever synchronization issues other projects
>>>>>> are having now with synching with the device tree info from the kernel 
>>>>>> will
>>>>>> just then become the problem of the kernel developers, who will then
>>>>>> have to sync with the device tree info from another repository.  If the
>>>>>> sync issues can't be solved now for them, why or how would it be solved
>>>>>> post-separation for us?  (It sounds like a zero-sum game of pain transfer
>>>>>> to me.)
>>>>>>
>>>>>> I'm relatively unfamiliar with the arguments.  Can someone provide
>>>>>> a brief list of reasons this is needed, and how the inconvenience to 
>>>>>> Linux
>>>>>> kernel developers will be minimized, should it proceed?
>>>>>
>>>>
>>>>
>>>>> One of the reasons for doing devicetrees is to separate the hardware
>>>>> description from the code so that:
>>>>> - Other OSes (and bootloaders) can use the same description to start on
>>>>>  a given hardware
>>>>> - A generic Kernel can be started on any hardware
>>>>> - A hardware describes itself, makes itself more introspecitve so we can
>>>>>  go away from very specialized kernels
>>>>
>>>> Tim knows this ^^^^.  He was asking for the arguments for moving dts files
>>>> out of the linux kernel source tree.
>>>
>>> We've made the decision that devicetree bindings need to be treated as
>>> ABI, but as long as the .dts files live in the kernel there will
>>> always be the temptation to just tweak things in lock-step and nobody
>>> will notice. Splitting the files out gives that extra push to think
>>> about whether changes to a binding will backwards compatible with a
>>> tree that doesn't have those changes because the chances are a lot
>>> higher that someone will hit that combination.
>>>
>>> The other argument is shared source between
>>> BSD/U-Boot/Barebox/Linux/etc. Until we have a separate .dts repo there
>>> is no good way to share the database of hardware descriptions.
>>
>> We could provide an easy export (see below).  What do you think?
> 
> So what would the process be to get changes to those files upstream if you 
> did this? It would make it marginally easier to USE, but once disconnected 
> from the git world, a lot harder to track and fix.

Changes would be through the normal upstream project (the Linux kernel).  Just 
like when
the Linux kernel uses a driver from BSD, any changes to the upstream are done 
through
the BSD process.

> 
> Also, you should export the device tree docs too, since they are, in theory, 
> a set.

Yes, absolutely.  And the kbuild docs need to be updated.  And ....  The patch 
was
just a proof of concept to show the scope of the changes that would be required 
and
that it was possible.

> And honestly, the device tree doc files need more work than the .dts and 
> .dtsi files.
> 
> Warner
> 
>> -Frank
>>
>>
>>
>> Proof of concept: export devicetree source and header files
>>
>> Not-signed-off-by: Frank Rowand <[email protected]>
>>
>>
>> ---
>> Makefile                   |   27    26 +    1 -     0 !
>> scripts/Makefile.dtsexport |   19    19 +    0 -     0 !
>> scripts/dts.sh             |   11    11 +    0 -     0 !
>> 3 files changed, 56 insertions(+), 1 deletion(-)
>>
>> Index: b/Makefile
>> ===================================================================
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -234,6 +234,9 @@ endif
>> # Where to locate arch specific headers
>> hdr-arch  := $(SRCARCH)
>>
>> +# Where to locate arch specific dts
>> +dts-arch  := $(SRCARCH)
>> +
>> KCONFIG_CONFIG       ?= .config
>> export KCONFIG_CONFIG
>>
>> @@ -463,7 +466,7 @@ version_h := include/generated/uapi/linu
>> no-dot-config-targets := clean mrproper distclean \
>>                       cscope gtags TAGS tags help %docs check% coccicheck \
>>                       $(version_h) headers_% archheaders archscripts \
>> -                     kernelversion %src-pkg
>> +                     kernelversion %src-pkg dts_export%
>>
>> config-targets := 0
>> mixed-targets  := 0
>> @@ -933,6 +936,26 @@ firmware_install: FORCE
>>      $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware 
>> __fw_install
>>
>> # ---------------------------------------------------------------------------
>> +# devicetree source and headers export
>> +
>> +#Default location for installed headers
>> +export EXPORT_DTS_PATH = $(KBUILD_OUTPUT)/usr/dts
>> +
>> +PHONY += dts_export_headers
>> +dts_export_headers: scripts_basic
>> +    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.dtsexport 
>> obj=include/dt-bindings
>> +    @echo $(KERNELRELEASE) >$(EXPORT_DTS_PATH)/linux_version
>> +
>> +PHONY += dts_export_all
>> +dts_export_all: dts_export_headers
>> +    $(Q)$(CONFIG_SHELL) $(srctree)/scripts/dts.sh
>> +
>> +PHONY += dts_export
>> +dts_export:
>> +    $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.dtsexport 
>> obj=arch/$(dts-arch)/boot/dts
>> +
>> +
>> +# 
>> ---------------------------------------------------------------------------
>> # Kernel headers
>>
>> #Default location for installed headers
>> @@ -1160,6 +1183,8 @@ help:
>>      @echo  '  modules_prepare - Set up for building external modules'
>>      @echo  '  tags/TAGS       - Generate tags file for editors'
>>      @echo  '  cscope          - Generate cscope index'
>> +    @echo  '  dts_export_all  - Export devicetree source and headers to 
>> EXPORT_DTS_PATH'
>> +    @echo  '                    (default: $(EXPORT_DTS_PATH))'
>>      @echo  '  gtags           - Generate GNU GLOBAL index'
>>      @echo  '  kernelrelease   - Output the release version string'
>>      @echo  '  kernelversion   - Output the version stored in Makefile'
>> Index: b/scripts/Makefile.dtsexport
>> ===================================================================
>> --- /dev/null
>> +++ b/scripts/Makefile.dtsexport
>> @@ -0,0 +1,19 @@
>> +# ==========================================================================
>> +# Exporting dts source and header files
>> +#
>> +# ==========================================================================
>> +
>> +srcpath := $(srctree)/$(obj)/*
>> +dstpath := $(EXPORT_DTS_PATH)/$(obj)
>> +
>> +include scripts/Kbuild.include
>> +
>> +
>> +quiet_cmd_install = EXPORT $(subst $(srctree)/,,$(srcpath))
>> +      cmd_install = mkdir -p $(dstpath); cp -a $(srcpath) $(dstpath)
>> +
>> +
>> +.PHONY: export
>> +export:
>> +    $(call cmd,install)
>> +
>> Index: b/scripts/dts.sh
>> ===================================================================
>> --- /dev/null
>> +++ b/scripts/dts.sh
>> @@ -0,0 +1,11 @@
>> +#!/bin/sh
>> +# Run dts_export command for all architectures
>> +
>> +# Stop on error
>> +set -e
>> +
>> +for arch in $(ls ${srctree}/arch); do
>> +    if [ -d ${srctree}/arch/${arch}/boot/dts ]; then
>> +            make ARCH=${arch} dts_export
>> +    fi
>> +done
>> --
>> To unsubscribe from this list: send the line "unsubscribe 
>> devicetree-compiler" in
>> the body of a message to [email protected]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree-spec" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to