[meta-ti] Jacob Stiffler : linux: add new method for cmem injection
Module: meta-ti Branch: krogoth Commit: bf58916a108025475bd7b66d92e1e3f93f0a687d URL: http://arago-project.org/git/meta-ti.git?a=commit;h=bf58916a108025475bd7b66d92e1e3f93f0a687d Author: Jacob Stiffler Date: Wed Sep 14 00:21:17 2016 + linux: add new method for cmem injection * Add new method to perform CMEM DT injection as it is required to customize at a finer level than machine. * Now CMEM injection can be performed per DT. Signed-off-by: Jacob Stiffler Signed-off-by: Denys Dmytriyenko --- recipes-kernel/linux/cmem.inc | 78 +--- recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi | 29 +++ 2 files changed, 95 insertions(+), 12 deletions(-) diff --git a/recipes-kernel/linux/cmem.inc b/recipes-kernel/linux/cmem.inc index fc0bf48..b60909c 100644 --- a/recipes-kernel/linux/cmem.inc +++ b/recipes-kernel/linux/cmem.inc @@ -1,18 +1,72 @@ -SRC_URI += "file://cmem.dtsi" +# Add concept of machine variants to split DTBs into subsets +# +# Use these for temporary overrides +CMEM_MACHINE = "${MACHINE}" +CMEM_MACHINE_am57xx-evm = "am571x am572x" +CMEM_MACHINE_am57xx-hs-evm = "am571x am572x" +# Set cmem.dtsi per machine or machine variant +CMEM_DTSI = "cmem.dtsi" +CMEM_DTSI_am571x = "cmem-am571x.dtsi" + +# Split device trees between variants +CMEM_DEVICETREE = "${KERNEL_DEVICETREE}" +CMEM_DEVICETREE_am571x = "am571x-idk.dtb am571x-idk-lcd-osd.dtb am571x-idk-lcd-osd101t2587.dtb" +CMEM_DEVICETREE_am572x = "am57xx-beagle-x15.dtb am57xx-beagle-x15-revb1.dtb am57xx-evm.dtb am57xx-evm-reva3.dtb am572x-idk.dtb \ + am572x-idk-lcd-osd.dtb am572x-idk-lcd-osd101t2587.dtb" + + +# Flag to enable CMEM injection RESERVE_CMEM ?= "0" -do_setup_cmem() { -if [ "${RESERVE_CMEM}" == "1" ] -then -cp ${WORKDIR}/cmem.dtsi ${S}/arch/arm/boot/dts/${MACHINE}-cmem.dtsi - -for dtb in ${KERNEL_DEVICETREE} -do -dts=`echo $dtb | sed -e 's|dtb$|dts|'` -echo "#include \"${MACHINE}-cmem.dtsi\"" >> ${S}/arch/arm/boot/dts/$dts -done -fi +# Add correct cmem.dtsi to SRC_URI for each variant for a given machine +python() { +old_overrides = d.getVar('OVERRIDES', False) + +# Initialize with empty string to simplify logic to append to SRC_URI +cmem_dtsi = set(['']) + +for cmem_machine in (d.getVar('CMEM_MACHINE', True) or '').split(): +# Create copy of data for additional override +localdata = bb.data.createCopy(d) +localdata.setVar('OVERRIDES', '%s:%s' % (cmem_machine, old_overrides)) +bb.data.update_data(localdata) + +cmem_dtsi.add(localdata.getVar('CMEM_DTSI', True)) + +d.appendVar('SRC_URI', ' file://'.join(cmem_dtsi)) +} + +python do_setup_cmem() { +import shutil + +old_overrides = d.getVar('OVERRIDES', False) + +if d.getVar('RESERVE_CMEM', True) is '1': +for cmem_machine in (d.getVar('CMEM_MACHINE', True) or '').split(): +# Create copy of data for additional override +localdata = bb.data.createCopy(d) +localdata.setVar('OVERRIDES', '%s:%s' % (cmem_machine, old_overrides)) +bb.data.update_data(localdata) + +# Get source directory and dtsi filename +src_dir = localdata.getVar('WORKDIR', True) +src_dtsi = localdata.getVar('CMEM_DTSI', True) + +# Get destination directory and destination dtsi filename which adds +# the MACHINE prefix. +dst_dir = os.path.join(localdata.getVar('S', True), 'arch/arm/boot/dts') +dst_dtsi = localdata.expand('${MACHINE}-${CMEM_DTSI}') + +# Copy cmem.dtsi into source tree +shutil.copy(os.path.join(src_dir,src_dtsi), os.path.join(dst_dir,dst_dtsi)) + +# Inject dtsi into each dts in list +for dtb in (localdata.getVar('CMEM_DEVICETREE', True) or '').split(): +dts = dtb[:-4] + '.dts' + +with open(os.path.join(dst_dir,dts), 'a') as dts_file: +dts_file.write('\n#include "%s"\n' % dst_dtsi) } do_patch[postfuncs] += "do_setup_cmem" diff --git a/recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi b/recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi new file mode 100644 index 000..ebd6129 --- /dev/null +++ b/recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi @@ -0,0 +1,29 @@ +/ { +reserved-memory { +#address-cells = <2>; +#size-cells = <2>; +ranges; + +cmem_block_mem_0: cmem_block_mem@a000 { +reg = <0x0 0xa000 0x0 0x0c00>; +no-map; +status = "okay"; +}; +}; + +cmem { +compatible = "ti,cmem"; +#address-cells = <1>; +#size-cells = <0>; + + #pool-size-cells = <2>; + +status = "okay"; + +
[meta-ti] Jacob Stiffler : linux: add new method for cmem injection
Module: meta-ti Branch: master Commit: 0623707d8084b2856b74a1b40aa2dee361f6b933 URL: http://arago-project.org/git/meta-ti.git?a=commit;h=0623707d8084b2856b74a1b40aa2dee361f6b933 Author: Jacob Stiffler Date: Wed Sep 14 00:21:17 2016 + linux: add new method for cmem injection * Add new method to perform CMEM DT injection as it is required to customize at a finer level than machine. * Now CMEM injection can be performed per DT. Signed-off-by: Jacob Stiffler Signed-off-by: Denys Dmytriyenko --- recipes-kernel/linux/cmem.inc | 78 +--- recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi | 29 +++ 2 files changed, 95 insertions(+), 12 deletions(-) diff --git a/recipes-kernel/linux/cmem.inc b/recipes-kernel/linux/cmem.inc index fc0bf48..b60909c 100644 --- a/recipes-kernel/linux/cmem.inc +++ b/recipes-kernel/linux/cmem.inc @@ -1,18 +1,72 @@ -SRC_URI += "file://cmem.dtsi" +# Add concept of machine variants to split DTBs into subsets +# +# Use these for temporary overrides +CMEM_MACHINE = "${MACHINE}" +CMEM_MACHINE_am57xx-evm = "am571x am572x" +CMEM_MACHINE_am57xx-hs-evm = "am571x am572x" +# Set cmem.dtsi per machine or machine variant +CMEM_DTSI = "cmem.dtsi" +CMEM_DTSI_am571x = "cmem-am571x.dtsi" + +# Split device trees between variants +CMEM_DEVICETREE = "${KERNEL_DEVICETREE}" +CMEM_DEVICETREE_am571x = "am571x-idk.dtb am571x-idk-lcd-osd.dtb am571x-idk-lcd-osd101t2587.dtb" +CMEM_DEVICETREE_am572x = "am57xx-beagle-x15.dtb am57xx-beagle-x15-revb1.dtb am57xx-evm.dtb am57xx-evm-reva3.dtb am572x-idk.dtb \ + am572x-idk-lcd-osd.dtb am572x-idk-lcd-osd101t2587.dtb" + + +# Flag to enable CMEM injection RESERVE_CMEM ?= "0" -do_setup_cmem() { -if [ "${RESERVE_CMEM}" == "1" ] -then -cp ${WORKDIR}/cmem.dtsi ${S}/arch/arm/boot/dts/${MACHINE}-cmem.dtsi - -for dtb in ${KERNEL_DEVICETREE} -do -dts=`echo $dtb | sed -e 's|dtb$|dts|'` -echo "#include \"${MACHINE}-cmem.dtsi\"" >> ${S}/arch/arm/boot/dts/$dts -done -fi +# Add correct cmem.dtsi to SRC_URI for each variant for a given machine +python() { +old_overrides = d.getVar('OVERRIDES', False) + +# Initialize with empty string to simplify logic to append to SRC_URI +cmem_dtsi = set(['']) + +for cmem_machine in (d.getVar('CMEM_MACHINE', True) or '').split(): +# Create copy of data for additional override +localdata = bb.data.createCopy(d) +localdata.setVar('OVERRIDES', '%s:%s' % (cmem_machine, old_overrides)) +bb.data.update_data(localdata) + +cmem_dtsi.add(localdata.getVar('CMEM_DTSI', True)) + +d.appendVar('SRC_URI', ' file://'.join(cmem_dtsi)) +} + +python do_setup_cmem() { +import shutil + +old_overrides = d.getVar('OVERRIDES', False) + +if d.getVar('RESERVE_CMEM', True) is '1': +for cmem_machine in (d.getVar('CMEM_MACHINE', True) or '').split(): +# Create copy of data for additional override +localdata = bb.data.createCopy(d) +localdata.setVar('OVERRIDES', '%s:%s' % (cmem_machine, old_overrides)) +bb.data.update_data(localdata) + +# Get source directory and dtsi filename +src_dir = localdata.getVar('WORKDIR', True) +src_dtsi = localdata.getVar('CMEM_DTSI', True) + +# Get destination directory and destination dtsi filename which adds +# the MACHINE prefix. +dst_dir = os.path.join(localdata.getVar('S', True), 'arch/arm/boot/dts') +dst_dtsi = localdata.expand('${MACHINE}-${CMEM_DTSI}') + +# Copy cmem.dtsi into source tree +shutil.copy(os.path.join(src_dir,src_dtsi), os.path.join(dst_dir,dst_dtsi)) + +# Inject dtsi into each dts in list +for dtb in (localdata.getVar('CMEM_DEVICETREE', True) or '').split(): +dts = dtb[:-4] + '.dts' + +with open(os.path.join(dst_dir,dts), 'a') as dts_file: +dts_file.write('\n#include "%s"\n' % dst_dtsi) } do_patch[postfuncs] += "do_setup_cmem" diff --git a/recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi b/recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi new file mode 100644 index 000..ebd6129 --- /dev/null +++ b/recipes-kernel/linux/files/dra7xx/cmem-am571x.dtsi @@ -0,0 +1,29 @@ +/ { +reserved-memory { +#address-cells = <2>; +#size-cells = <2>; +ranges; + +cmem_block_mem_0: cmem_block_mem@a000 { +reg = <0x0 0xa000 0x0 0x0c00>; +no-map; +status = "okay"; +}; +}; + +cmem { +compatible = "ti,cmem"; +#address-cells = <1>; +#size-cells = <0>; + + #pool-size-cells = <2>; + +status = "okay"; + +