mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-05-09 04:50:45 +00:00
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 <j-stiffler@ti.com> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
This commit is contained in:
committed by
Denys Dmytriyenko
parent
33f12de805
commit
bf58916a10
@@ -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
|
||||
# Add correct cmem.dtsi to SRC_URI for each variant for a given machine
|
||||
python() {
|
||||
old_overrides = d.getVar('OVERRIDES', False)
|
||||
|
||||
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
|
||||
# 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"
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/ {
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
cmem_block_mem_0: cmem_block_mem@a0000000 {
|
||||
reg = <0x0 0xa0000000 0x0 0x0c000000>;
|
||||
no-map;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
cmem {
|
||||
compatible = "ti,cmem";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
#pool-size-cells = <2>;
|
||||
|
||||
status = "okay";
|
||||
|
||||
cmem_block_0: cmem_block@0 {
|
||||
reg = <0>;
|
||||
memory-region = <&cmem_block_mem_0>;
|
||||
cmem-buf-pools = <1 0x0 0x0c000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user