From 31e0f4b5aa98481160ea2fb85a51d05b8135cd46 Mon Sep 17 00:00:00 2001 From: Jacob Stiffler Date: Thu, 29 Oct 2015 18:06:06 +0000 Subject: linux: cmem.inc: Implement way to configure more complex CMEM config * Supply the entire cmem.dtsi per machine - Disabled by default - Currently only supported for dra7xx and k2hk-evm * Enable by setting RESERVE_CMEM = "1" Signed-off-by: Jacob Stiffler Signed-off-by: Denys Dmytriyenko --- recipes-kernel/linux/cmem.inc | 9 +---- recipes-kernel/linux/files/cmem.dtsi | 42 ++++++++++++++------- recipes-kernel/linux/files/dra7xx/cmem.dtsi | 26 +++++++++++++ recipes-kernel/linux/files/k2hk-evm/cmem.dtsi | 54 +++++++++++++++++++++++++++ 4 files changed, 110 insertions(+), 21 deletions(-) create mode 100644 recipes-kernel/linux/files/dra7xx/cmem.dtsi create mode 100644 recipes-kernel/linux/files/k2hk-evm/cmem.dtsi diff --git a/recipes-kernel/linux/cmem.inc b/recipes-kernel/linux/cmem.inc index 742f3c80..fc0bf48d 100644 --- a/recipes-kernel/linux/cmem.inc +++ b/recipes-kernel/linux/cmem.inc @@ -1,17 +1,12 @@ SRC_URI += "file://cmem.dtsi" -CMEM_BASE ?= "" -CMEM_SIZE ?= "" +RESERVE_CMEM ?= "0" do_setup_cmem() { - if [ ! -z "${CMEM_BASE}" ] + if [ "${RESERVE_CMEM}" == "1" ] then cp ${WORKDIR}/cmem.dtsi ${S}/arch/arm/boot/dts/${MACHINE}-cmem.dtsi - sed -i -e "s|__CMEM_BASE__|${CMEM_BASE}|g" \ - -e "s|__CMEM_SIZE__|${CMEM_SIZE}|g" \ - ${S}/arch/arm/boot/dts/${MACHINE}-cmem.dtsi - for dtb in ${KERNEL_DEVICETREE} do dts=`echo $dtb | sed -e 's|dtb$|dts|'` diff --git a/recipes-kernel/linux/files/cmem.dtsi b/recipes-kernel/linux/files/cmem.dtsi index 6b1da990..23119861 100644 --- a/recipes-kernel/linux/files/cmem.dtsi +++ b/recipes-kernel/linux/files/cmem.dtsi @@ -1,24 +1,38 @@ +/* + * This is a placeholder for CMEM reserved memory declarations. This + * is simply an example and does not actually reserve any memory for + * CMEM. + * + * The commented sections below provide an example for how to provide + * a reserved memory region for CMEM to use as a buffer pool. + */ / { - reserved-memory { - cmem_block_mem_0: cmem_block_mem@__CMEM_BASE__ { - reg = <0x__CMEM_BASE__ 0x__CMEM_SIZE__>; - no-map; - status = "okay"; - }; - }; +/* + reserved-memory { + cmem_block_mem_0: cmem_block_mem@a0000000 { + reg = <0x0 0xa0000000 0x0 0x0a000000>; + no-map; + status = "okay"; + }; + }; +*/ - cmem { - compatible = "ti,cmem"; - #address-cells = <1>; - #size-cells = <0>; + cmem { + compatible = "ti,cmem"; + #address-cells = <1>; + #size-cells = <0>; - status = "okay"; + #pool-size-cells = <2>; + + status = "disabled"; +/* + status = "okay"; cmem_block_0: cmem_block@0 { reg = <0>; memory-region = <&cmem_block_mem_0>; - cmem-buf-pools = <1 0x__CMEM_SIZE__>; + cmem-buf-pools = <1 0x0 0x0a000000>; }; +*/ }; - }; diff --git a/recipes-kernel/linux/files/dra7xx/cmem.dtsi b/recipes-kernel/linux/files/dra7xx/cmem.dtsi new file mode 100644 index 00000000..d91faf9c --- /dev/null +++ b/recipes-kernel/linux/files/dra7xx/cmem.dtsi @@ -0,0 +1,26 @@ +/ { + reserved-memory { + cmem_block_mem_0: cmem_block_mem@a0000000 { + reg = <0x0 0xa0000000 0x0 0x0a000000>; + 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 0x0a000000>; + }; + }; + +}; diff --git a/recipes-kernel/linux/files/k2hk-evm/cmem.dtsi b/recipes-kernel/linux/files/k2hk-evm/cmem.dtsi new file mode 100644 index 00000000..7e897abc --- /dev/null +++ b/recipes-kernel/linux/files/k2hk-evm/cmem.dtsi @@ -0,0 +1,54 @@ +/ { + reserved-memory { + mpm_block_mem_0: mpm_block_mem@820000000 { + reg = <0x00000008 0x20000000 0x00000000 0x02000000>; + no-map; + status = "okay"; + }; + + cmem_block_mem_0: cmem_block_mem@829000000 { + reg = <0x00000008 0x29000000 0x00000000 0x57000000>; + no-map; + status = "okay"; + }; + + cmem_block_mem_1: cmem_block_mem@00c100000 { + reg = <0x00000000 0x0c100000 0x00000000 0x00480000>; + no-map; + status = "okay"; + }; + + cmem_block_mem_2: cmem_block_mem@822000000 { + reg = <0x00000008 0x22000000 0x00000000 0x07000000>; + 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 0x00000000 0x57000000>; + }; + + cmem_block_1: cmem_block@1 { + reg = <1>; + memory-region = <&cmem_block_mem_1>; + }; + + cmem_block_2: cmem_block@2 { + reg = <2>; + memory-region = <&cmem_block_mem_2>; + }; + }; + +}; -- cgit v1.2.3-54-g00ecf