This patch set adds support for m4u(Multimedia Memory Management Unit),
Currently it only support the m4u with 2 levels of pagetable on mt8173.
It's also based on Robin Murphy's reposting Short-descriptor v2.
Please check the hardware block diagram of Mediatek IOMMU.
m4u (Multimedia Memory Management Unit)
|
SMI Common(Smart Multimedia Interface Common)
|
+----------------+-------
| |
| |
SMI larb0 SMI larb1 ... SoCs have several SMI local arbiter(larb).
(display) (vdec)
| |
| |
+-----+-----+ +----+----+
| | | | | |
| | |... | | | ... There are different ports in each larb.
| | | | | |
OVL0 RDMA0 WDMA0 MC PP VLD
As above, The Multimedia HW will go through SMI and M4U while it
access EMI. SMI is a bridge between m4u and the Multimedia HW. It contain
smi local arbiter and smi common. It will control whether the Multimedia
HW should go though the m4u for translation or bypass it and talk
directly with EMI. And also SMI help control the power domain and clocks for
each local arbiter.
Normally we specify a local arbiter(larb) for each multimedia HW
like display, video decode, and camera. And there are different ports
in each larb. Take a example, There are many ports like MC, PP, VLD in the
video decode local arbiter, all these ports are according to the video HW.
v8:
- rebase onto v4.5-rc1.
- add depends on (ARM || ARM64) for MTK_IOMMU in Kconfig to avoid build fail
in other ARCHs.
- delete COHERENCE_EN bit.
- delete a *if* while config iommu information since the iommu is always
enabled currently.
v7: http://lists.linuxfoundation.org/pipermail/iommu/2015-December/015214.html
- rebase onto Robin's short v2:
http://lists.linuxfoundation.org/pipermail/iommu/2015-December/015210.html
- Adjust the iommu probe sequence to meet the expectant flow that the iommu
core help create the domain.
- use component additional data instead of the interface mtk_smi_config_port.
- reconstruct the SMI help function.
v6: http://lists.linuxfoundation.org/pipermail/iommu/2015-December/015105.html
-rebase onto v4.4-rc1.
-Use Robin's reposting Short-decriptor.
http://lists.linuxfoundation.org/pipermail/iommu/2015-December/015088.html
-Add component for m4u and smi since m4u should depend on smi-larb.
The master device is the m4u device, and the client one is the smi-larb device.
-Change mtk iommu-cells from 2 to 1 since the mapping between larb and port is
fixed. Compare this with v2, we redefine MTK_M4U_ID following this register
REG_MMU_INT_ID.
-About SMI: Add some help funcion and rename some function and struction for
more readable.
These three above are according to Daniel Kurtz's suggestion.
v5: http://lists.linuxfoundation.org/pipermail/iommu/2015-October/014586.html
-rebase onto v4.3-rc1.
-About MTK iommu: don't return the same domain while domain_alloc, change the
domain's flow according to the M4U HW.
-About Short-descriptor: Improve many error-handles, NO_PERMS quirk, and
add TLBI_MAP quirk following Will's Suggestion; Add io-pgtable don't use
dma_to_phys; Add a loop in arm_short_unmap since iommu_unmap don't care the
physical address align.
-About SMI driver: Add a help funcion for some similar code. Add PROPRE_DEFER
for power-domain as MTK SCPSYS is module_init currently.
v4: http://lists.linuxfoundation.org/pipermail/iommu/2015-August/013903.html
-use only one iommu domain here based on the Robin's DMA-v5:
http://lists.linuxfoundation.org/pipermail/iommu/2015-July/013900.html
-remove flush_pgtable.
-change writel to writel_relaxed.
-about Short-descriptor: move dma_map_single into io-pgtable-arm-short.
Improve the flow of free pgtable and add NO_XN+NO_PERMS quirk following
Will's suggestion.
-Change two sytle issues in dtsi according to Daniel's suggestion.
v3: http://lists.linuxfoundation.org/pipermail/iommu/2015-July/013632.html
-rebased onto v4.2-rc1
-improve iommu flow based on the Robin's DMA v3:
http://lists.linuxfoundation.org/pipermail/iommu/2015-July/013597.html
-change mtk iommu-cells from 1 to 2.
-about Short-descriptor: add split function; add self-test; add some other bits like nG,
XN according to the spec; add SUPERSECTION and MTK quirk; move io_pgtable_ops_to_pgtable
out from LPAE to the header file.
-about SMI: move from driver/soc/mediatek to driver/memory; change the clocks from
clk[2] to clk_apb and clk_smi; add pm.
-add iommu suspend/resume to backup/restore register.
v2: http://lists.linuxfoundation.org/pipermail/iommu/2015-May/013028.html
-add arm short descriptor support.
-seperate smi common from smi and change the clock-names according
to smi HW.
-delete the hardcode of the port-names in mt8173.
replace this with larb-portes-nr in dtsi.
-fix some coding style issues.
v1: http://lists.infradead.org/pipermail/linux-mediatek/2015-March/000058.html
-initial version.
Yong Wu (5):
dt-bindings: iommu: Add binding for mediatek IOMMU
dt-bindings: mediatek: Add smi dts binding
memory: mediatek: Add SMI driver
iommu/mediatek: Add mt8173 IOMMU driver
dts: mt8173: Add iommu/smi nodes for mt8173
.../devicetree/bindings/iommu/mediatek,iommu.txt | 68 ++
.../memory-controllers/mediatek,smi-common.txt | 24 +
.../memory-controllers/mediatek,smi-larb.txt | 25 +
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 81 +++
drivers/iommu/Kconfig | 16 +
drivers/iommu/Makefile | 1 +
drivers/iommu/mtk_iommu.c | 732 +++++++++++++++++++++
drivers/memory/Kconfig | 8 +
drivers/memory/Makefile | 1 +
drivers/memory/mtk-smi.c | 272 ++++++++
include/dt-bindings/memory/mt8173-larb-port.h | 111 ++++
include/soc/mediatek/smi.h | 58 ++
12 files changed, 1397 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iommu/mediatek,iommu.txt
create mode 100644 Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt
create mode 100644 Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt
create mode 100644 drivers/iommu/mtk_iommu.c
create mode 100644 drivers/memory/mtk-smi.c
create mode 100644 include/dt-bindings/memory/mt8173-larb-port.h
create mode 100644 include/soc/mediatek/smi.h
--
1.8.1.1.dirty
@@ -0,0 +1,68 @@+* Mediatek IOMMU Architecture Implementation++ Some Mediatek SOCs contain a Multimedia Memory Management Unit (M4U) which+uses the ARM Short-Descriptor translation table format for address translation.++ About the M4U Hardware Block Diagram, please check below:++ EMI (External Memory Interface)+ |+ m4u (Multimedia Memory Management Unit)+ |+ SMI Common(Smart Multimedia Interface Common)+ |+ +----------------+-------+ | |+ | |+ SMI larb0 SMI larb1 ... SoCs have several SMI local arbiter(larb).+ (display) (vdec)+ | |+ | |+ +-----+-----+ +----+----++ | | | | | |+ | | |... | | | ... There are different ports in each larb.+ | | | | | |+OVL0 RDMA0 WDMA0 MC PP VLD++ As above, The Multimedia HW will go through SMI and M4U while it+access EMI. SMI is a bridge between m4u and the Multimedia HW. It contain+smi local arbiter and smi common. It will control whether the Multimedia+HW should go though the m4u for translation or bypass it and talk+directly with EMI. And also SMI help control the power domain and clocks for+each local arbiter.+ Normally we specify a local arbiter(larb) for each multimedia HW+like display, video decode, and camera. And there are different ports+in each larb. Take a example, There are many ports like MC, PP, VLD in the+video decode local arbiter, all these ports are according to the video HW.++Required properties:+- compatible : must be "mediatek,mt8173-m4u".+- reg : m4u register base and size.+- interrupts : the interrupt of m4u.+- clocks : must contain one entry for each clock-names.+- clock-names : must be "bclk", It is the block clock of m4u.+- mediatek,larbs : List of phandle to the local arbiters in the current Socs.+ Refer to bindings/memory-controllers/mediatek,smi-larb.txt. It must sort+ according to the local arbiter index, like larb0, larb1, larb2...+- iommu-cells : must be 1. This is the mtk_m4u_id according to the HW.+ Specifies the mtk_m4u_id as defined in+ dt-binding/memory/mt8173-larb-port.h.++Example:+ iommu: iommu@10205000 {+ compatible = "mediatek,mt8173-m4u";+ reg = <0 0x10205000 0 0x1000>;+ interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_LOW>;+ clocks = <&infracfg CLK_INFRA_M4U>;+ clock-names = "bclk";+ mediatek,larbs = <&larb0 &larb1 &larb2 &larb3 &larb4 &larb5>;+ #iommu-cells = <1>;+ };++Example for a client device:+ display {+ compatible = "mediatek,mt8173-disp";+ iommus = <&iommu M4U_PORT_DISP_OVL0>,+ <&iommu M4U_PORT_DISP_RDMA0>;+ ...+ };
@@ -0,0 +1,24 @@+SMI (Smart Multimedia Interface) Common++The hardware block diagram please check bindings/iommu/mediatek,iommu.txt++Required properties:+- compatible : must be "mediatek,mt8173-smi-common"+- reg : the register and size of the SMI block.+- power-domains : a phandle to the power domain of this local arbiter.+- clocks : Must contain an entry for each entry in clock-names.+- clock-names : must contain 2 entries, as follows:+ - "apb" : Advanced Peripheral Bus clock, It's the clock for setting+ the register.+ - "smi" : It's the clock for transfer data and command.+ They may be the same if both source clocks are the same.++Example:+ smi_common: smi@14022000 {+ compatible = "mediatek,mt8173-smi-common";+ reg = <0 0x14022000 0 0x1000>;+ power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;+ clocks = <&mmsys CLK_MM_SMI_COMMON>,+ <&mmsys CLK_MM_SMI_COMMON>;+ clock-names = "apb", "smi";+ };
@@ -0,0 +1,25 @@+SMI (Smart Multimedia Interface) Local Arbiter++The hardware block diagram please check bindings/iommu/mediatek,iommu.txt++Required properties:+- compatible : must be "mediatek,mt8173-smi-larb"+- reg : the register and size of this local arbiter.+- mediatek,smi : a phandle to the smi_common node.+- power-domains : a phandle to the power domain of this local arbiter.+- clocks : Must contain an entry for each entry in clock-names.+- clock-names: must contain 2 entries, as follows:+ - "apb" : Advanced Peripheral Bus clock, It's the clock for setting+ the register.+ - "smi" : It's the clock for transfer data and command.++Example:+ larb1: larb@16010000 {+ compatible = "mediatek,mt8173-smi-larb";+ reg = <0 0x16010000 0 0x1000>;+ mediatek,smi = <&smi_common>;+ power-domains = <&scpsys MT8173_POWER_DOMAIN_VDEC>;+ clocks = <&vdecsys CLK_VDEC_CKEN>,+ <&vdecsys CLK_VDEC_LARB_CKEN>;+ clock-names = "apb", "smi";+ };
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Tested-by: Philipp Zabel <redacted>
---
drivers/memory/Kconfig | 8 ++
drivers/memory/Makefile | 1 +
drivers/memory/mtk-smi.c | 272 +++++++++++++++++++++++++++++++++++++++++++++
include/soc/mediatek/smi.h | 58 ++++++++++
4 files changed, 339 insertions(+)
create mode 100644 drivers/memory/mtk-smi.c
create mode 100644 include/soc/mediatek/smi.h
@@ -0,0 +1,272 @@+/*+*Copyright(c)2015-2016MediaTekInc.+*Author:YongWu<yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>+*+*Thisprogramisfreesoftware;youcanredistributeitand/ormodify+*itunderthetermsoftheGNUGeneralPublicLicenseversion2as+*publishedbytheFreeSoftwareFoundation.+*+*Thisprogramisdistributedinthehopethatitwillbeuseful,+*butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof+*MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe+*GNUGeneralPublicLicenseformoredetails.+*/+#include<linux/clk.h>+#include<linux/component.h>+#include<linux/err.h>+#include<linux/io.h>+#include<linux/of_address.h>+#include<linux/of_platform.h>+#include<linux/platform_device.h>+#include<linux/pm_runtime.h>+#include<soc/mediatek/smi.h>++#define SMI_LARB_MMU_EN 0xf00++structmtk_smi{+structdevice*dev;+structclk*clk_apb,*clk_smi;+};++structmtk_smi_larb{/* larb: local arbiter */+structmtk_smismi;+void__iomem*base;+structdevice*smi_common_dev;+u32*mmu;+};++staticintmtk_smi_enable(conststructmtk_smi*smi)+{+intret;++ret=pm_runtime_get_sync(smi->dev);+if(ret<0)+returnret;++ret=clk_prepare_enable(smi->clk_apb);+if(ret)+gotoerr_put_pm;++ret=clk_prepare_enable(smi->clk_smi);+if(ret)+gotoerr_disable_apb;++return0;++err_disable_apb:+clk_disable_unprepare(smi->clk_apb);+err_put_pm:+pm_runtime_put_sync(smi->dev);+returnret;+}++staticvoidmtk_smi_disable(conststructmtk_smi*smi)+{+clk_disable_unprepare(smi->clk_smi);+clk_disable_unprepare(smi->clk_apb);+pm_runtime_put_sync(smi->dev);+}++intmtk_smi_larb_get(structdevice*larbdev)+{+structmtk_smi_larb*larb=dev_get_drvdata(larbdev);+structmtk_smi*common=dev_get_drvdata(larb->smi_common_dev);+intret;++/* Enable the smi-common's power and clocks */+ret=mtk_smi_enable(common);+if(ret)+returnret;++/* Enable the larb's power and clocks */+ret=mtk_smi_enable(&larb->smi);+if(ret){+mtk_smi_disable(common);+returnret;+}++/* Configure the iommu info for this larb */+writel(*larb->mmu,larb->base+SMI_LARB_MMU_EN);++return0;+}++voidmtk_smi_larb_put(structdevice*larbdev)+{+structmtk_smi_larb*larb=dev_get_drvdata(larbdev);+structmtk_smi*common=dev_get_drvdata(larb->smi_common_dev);++/*+*Don'tde-configuretheiommuinfoforthislarbsincetheremaybe+*severalmodulesinthislarb.+*Theiommuinfowillberesetafterpoweroff.+*/++mtk_smi_disable(&larb->smi);+mtk_smi_disable(common);+}++staticint+mtk_smi_larb_bind(structdevice*dev,structdevice*master,void*data)+{+structmtk_smi_larb*larb=dev_get_drvdata(dev);+structmtk_smi_iommu*smi_iommu=data;+unsignedinti;++for(i=0;i<smi_iommu->larb_nr;i++){+if(dev==smi_iommu->larb_imu[i].dev){+/* The 'mmu' may be updated in iommu-attach/detach. */+larb->mmu=&smi_iommu->larb_imu[i].mmu;+return0;+}+}+return-ENODEV;+}++staticvoid+mtk_smi_larb_unbind(structdevice*dev,structdevice*master,void*data)+{+/* Do nothing as the iommu is always enabled. */+}++staticconststructcomponent_opsmtk_smi_larb_component_ops={+.bind=mtk_smi_larb_bind,+.unbind=mtk_smi_larb_unbind,+};++staticintmtk_smi_larb_probe(structplatform_device*pdev)+{+structmtk_smi_larb*larb;+structresource*res;+structdevice*dev=&pdev->dev;+structdevice_node*smi_node;+structplatform_device*smi_pdev;++if(!dev->pm_domain)+return-EPROBE_DEFER;++larb=devm_kzalloc(dev,sizeof(*larb),GFP_KERNEL);+if(!larb)+return-ENOMEM;++res=platform_get_resource(pdev,IORESOURCE_MEM,0);+larb->base=devm_ioremap_resource(dev,res);+if(IS_ERR(larb->base))+returnPTR_ERR(larb->base);++larb->smi.clk_apb=devm_clk_get(dev,"apb");+if(IS_ERR(larb->smi.clk_apb))+returnPTR_ERR(larb->smi.clk_apb);++larb->smi.clk_smi=devm_clk_get(dev,"smi");+if(IS_ERR(larb->smi.clk_smi))+returnPTR_ERR(larb->smi.clk_smi);+larb->smi.dev=dev;++smi_node=of_parse_phandle(dev->of_node,"mediatek,smi",0);+if(!smi_node)+return-EINVAL;++smi_pdev=of_find_device_by_node(smi_node);+of_node_put(smi_node);+if(smi_pdev){+larb->smi_common_dev=&smi_pdev->dev;+}else{+dev_err(dev,"Failed to get the smi_common device\n");+return-EINVAL;+}++pm_runtime_enable(dev);+platform_set_drvdata(pdev,larb);+returncomponent_add(dev,&mtk_smi_larb_component_ops);+}++staticintmtk_smi_larb_remove(structplatform_device*pdev)+{+pm_runtime_disable(&pdev->dev);+component_del(&pdev->dev,&mtk_smi_larb_component_ops);+return0;+}++staticconststructof_device_idmtk_smi_larb_of_ids[]={+{.compatible="mediatek,mt8173-smi-larb",},+{}+};++staticstructplatform_drivermtk_smi_larb_driver={+.probe=mtk_smi_larb_probe,+.remove=mtk_smi_larb_remove,+.driver={+.name="mtk-smi-larb",+.of_match_table=mtk_smi_larb_of_ids,+}+};++staticintmtk_smi_common_probe(structplatform_device*pdev)+{+structdevice*dev=&pdev->dev;+structmtk_smi*common;++if(!dev->pm_domain)+return-EPROBE_DEFER;++common=devm_kzalloc(dev,sizeof(*common),GFP_KERNEL);+if(!common)+return-ENOMEM;+common->dev=dev;++common->clk_apb=devm_clk_get(dev,"apb");+if(IS_ERR(common->clk_apb))+returnPTR_ERR(common->clk_apb);++common->clk_smi=devm_clk_get(dev,"smi");+if(IS_ERR(common->clk_smi))+returnPTR_ERR(common->clk_smi);++pm_runtime_enable(dev);+platform_set_drvdata(pdev,common);+return0;+}++staticintmtk_smi_common_remove(structplatform_device*pdev)+{+pm_runtime_disable(&pdev->dev);+return0;+}++staticconststructof_device_idmtk_smi_common_of_ids[]={+{.compatible="mediatek,mt8173-smi-common",},+{}+};++staticstructplatform_drivermtk_smi_common_driver={+.probe=mtk_smi_common_probe,+.remove=mtk_smi_common_remove,+.driver={+.name="mtk-smi-common",+.of_match_table=mtk_smi_common_of_ids,+}+};++staticint__initmtk_smi_init(void)+{+intret;++ret=platform_driver_register(&mtk_smi_common_driver);+if(ret!=0){+pr_err("Failed to register SMI driver\n");+returnret;+}++ret=platform_driver_register(&mtk_smi_larb_driver);+if(ret!=0){+pr_err("Failed to register SMI-LARB driver\n");+gotoerr_unreg_smi;+}+returnret;++err_unreg_smi:+platform_driver_unregister(&mtk_smi_common_driver);+returnret;+}+subsys_initcall(mtk_smi_init);
--
1.8.1.1.dirty
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
drivers/iommu/mtk_iommu.c:246:4: error: 'IO_PGTABLE_QUIRK_NO_PERMS' undeclared (first use in this function)
IO_PGTABLE_QUIRK_NO_PERMS |
^
drivers/iommu/mtk_iommu.c:246:4: note: each undeclared identifier is reported only once for each function it appears in
quoted
drivers/iommu/mtk_iommu.c:247:4: error: 'IO_PGTABLE_QUIRK_TLBI_ON_MAP' undeclared (first use in this function)
IO_PGTABLE_QUIRK_TLBI_ON_MAP,
^
quoted
drivers/iommu/mtk_iommu.c:255:34: error: 'ARM_V7S' undeclared (first use in this function)
dom->iop = alloc_io_pgtable_ops(ARM_V7S, &dom->cfg, data);
^
In file included from include/linux/swab.h:4:0,
from include/uapi/linux/byteorder/big_endian.h:12,
from include/linux/byteorder/big_endian.h:4,
from arch/arm64/include/uapi/asm/byteorder.h:20,
from include/asm-generic/bitops/le.h:5,
from arch/arm64/include/asm/bitops.h:50,
from include/linux/bitops.h:36,
from include/linux/kernel.h:10,
from include/linux/clk.h:16,
from drivers/iommu/mtk_iommu.c:14:
quoted
drivers/iommu/mtk_iommu.c:264:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
(__builtin_constant_p((__u32)(x)) ? \
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
quoted
arch/arm64/include/asm/io.h:142:36: note: in expansion of macro 'writel_relaxed'
From: Robin Murphy <robin.murphy@arm.com> Date: 2016-01-26 17:43:00
On 26/01/16 04:12, Yong Wu wrote:
This patch adds support for mediatek m4u (MultiMedia Memory Management
Unit).
Whilst I can't speak for the hardware specifics, I think we've got the
API aspects and general shape of the code looking pretty much right by
now - I don't see anything worth complaining about at this point.
Reviewed-by: Robin Murphy <redacted>
From: kbuild test robot <hidden> Date: 2016-01-26 19:27:28
Hi Yong,
[auto build test WARNING on robh/for-next]
[also build test WARNING on v4.5-rc1 next-20160125]
[cannot apply to iommu/next]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Yong-Wu/MT8173-IOMMU-SUPPORT/20160126-201633
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux for-next
config: arm-allmodconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=arm
All warnings (new ones prefixed by >>):
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_domain_finalise':
drivers/iommu/mtk_iommu.c:246:4: error: 'IO_PGTABLE_QUIRK_NO_PERMS' undeclared (first use in this function)
IO_PGTABLE_QUIRK_NO_PERMS |
^
drivers/iommu/mtk_iommu.c:246:4: note: each undeclared identifier is reported only once for each function it appears in
drivers/iommu/mtk_iommu.c:247:4: error: 'IO_PGTABLE_QUIRK_TLBI_ON_MAP' undeclared (first use in this function)
IO_PGTABLE_QUIRK_TLBI_ON_MAP,
^
drivers/iommu/mtk_iommu.c:255:34: error: 'ARM_V7S' undeclared (first use in this function)
dom->iop = alloc_io_pgtable_ops(ARM_V7S, &dom->cfg, data);
^
In file included from include/linux/swab.h:4:0,
from include/uapi/linux/byteorder/big_endian.h:12,
from include/linux/byteorder/big_endian.h:4,
from arch/arm/include/uapi/asm/byteorder.h:19,
from include/asm-generic/bitops/le.h:5,
from arch/arm/include/asm/bitops.h:340,
from include/linux/bitops.h:36,
from include/linux/kernel.h:10,
from include/linux/clk.h:16,
from drivers/iommu/mtk_iommu.c:14:
drivers/iommu/mtk_iommu.c:264:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
(__builtin_constant_p((__u32)(x)) ? \
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
quoted
arch/arm/include/asm/io.h:305:36: note: in expansion of macro 'writel_relaxed'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
drivers/iommu/mtk_iommu.c:264:2: note: in expansion of macro 'writel'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:264:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:17:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
quoted
arch/arm/include/asm/io.h:305:36: note: in expansion of macro 'writel_relaxed'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
drivers/iommu/mtk_iommu.c:264:2: note: in expansion of macro 'writel'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:264:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:18:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
quoted
arch/arm/include/asm/io.h:305:36: note: in expansion of macro 'writel_relaxed'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
drivers/iommu/mtk_iommu.c:264:2: note: in expansion of macro 'writel'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:264:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:19:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
quoted
arch/arm/include/asm/io.h:305:36: note: in expansion of macro 'writel_relaxed'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
drivers/iommu/mtk_iommu.c:264:2: note: in expansion of macro 'writel'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:264:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:20:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0xff000000UL) >> 24)))
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
quoted
arch/arm/include/asm/io.h:305:36: note: in expansion of macro 'writel_relaxed'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
drivers/iommu/mtk_iommu.c:264:2: note: in expansion of macro 'writel'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:264:27: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:117:12: note: in definition of macro '__swab32'
__fswab32(x))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
quoted
arch/arm/include/asm/io.h:305:36: note: in expansion of macro 'writel_relaxed'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
drivers/iommu/mtk_iommu.c:264:2: note: in expansion of macro 'writel'
writel(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c: In function 'mtk_iommu_resume':
drivers/iommu/mtk_iommu.c:681:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
(__builtin_constant_p((__u32)(x)) ? \
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
drivers/iommu/mtk_iommu.c:681:2: note: in expansion of macro 'writel_relaxed'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:681:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:17:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
drivers/iommu/mtk_iommu.c:681:2: note: in expansion of macro 'writel_relaxed'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:681:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:18:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
drivers/iommu/mtk_iommu.c:681:2: note: in expansion of macro 'writel_relaxed'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:681:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:19:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
drivers/iommu/mtk_iommu.c:681:2: note: in expansion of macro 'writel_relaxed'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:681:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:20:12: note: in definition of macro '___constant_swab32'
(((__u32)(x) & (__u32)0xff000000UL) >> 24)))
^
include/uapi/linux/byteorder/big_endian.h:32:43: note: in expansion of macro '__swab32'
#define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
drivers/iommu/mtk_iommu.c:681:2: note: in expansion of macro 'writel_relaxed'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
drivers/iommu/mtk_iommu.c:681:35: error: 'struct io_pgtable_cfg' has no member named 'arm_v7s_cfg'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
include/uapi/linux/swab.h:117:12: note: in definition of macro '__swab32'
__fswab32(x))
^
include/linux/byteorder/generic.h:87:21: note: in expansion of macro '__cpu_to_le32'
#define cpu_to_le32 __cpu_to_le32
^
drivers/iommu/mtk_iommu.c:681:2: note: in expansion of macro 'writel_relaxed'
writel_relaxed(data->m4u_dom->cfg.arm_v7s_cfg.ttbr[0],
^
vim +/writel_relaxed +305 arch/arm/include/asm/io.h
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 289 #define readb_relaxed(c) ({ u8 __r = __raw_readb(c); __r; })
b0c1264f arch/arm/include/asm/io.h Olof Johansson 2011-10-04 290 #define readw_relaxed(c) ({ u16 __r = le16_to_cpu((__force __le16) \
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 291 __raw_readw(c)); __r; })
b0c1264f arch/arm/include/asm/io.h Olof Johansson 2011-10-04 292 #define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32) \
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 293 __raw_readl(c)); __r; })
e936771a arch/arm/include/asm/io.h Catalin Marinas 2010-07-28 294
af06bb9f arch/arm/include/asm/io.h Russell King 2012-05-25 295 #define writeb_relaxed(v,c) __raw_writeb(v,c)
af06bb9f arch/arm/include/asm/io.h Russell King 2012-05-25 296 #define writew_relaxed(v,c) __raw_writew((__force u16) cpu_to_le16(v),c)
af06bb9f arch/arm/include/asm/io.h Russell King 2012-05-25 297 #define writel_relaxed(v,c) __raw_writel((__force u32) cpu_to_le32(v),c)
e936771a arch/arm/include/asm/io.h Catalin Marinas 2010-07-28 298
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 299 #define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; })
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 300 #define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(); __v; })
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 301 #define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 302
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 303 #define writeb(v,c) ({ __iowmb(); writeb_relaxed(v,c); })
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 304 #define writew(v,c) ({ __iowmb(); writew_relaxed(v,c); })
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 @305 #define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
b92b3612 arch/arm/include/asm/io.h Russell King 2010-07-29 306
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 307 #define readsb(p,d,l) __raw_readsb(p,d,l)
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 308 #define readsw(p,d,l) __raw_readsw(p,d,l)
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 309 #define readsl(p,d,l) __raw_readsl(p,d,l)
^1da177e include/asm-arm/io.h Linus Torvalds 2005-04-16 310
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 311 #define writesb(p,d,l) __raw_writesb(p,d,l)
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 312 #define writesw(p,d,l) __raw_writesw(p,d,l)
5621caac arch/arm/include/asm/io.h Rob Herring 2012-02-10 313 #define writesl(p,d,l) __raw_writesl(p,d,l)
:::::: The code at line 305 was first introduced by commit
:::::: b92b3612134faff171981fad4f0adb33f485e02e ARM: Add barriers to io{read,write}{8,16,32} accessors as well
:::::: TO: Russell King [off-list ref]
:::::: CC: Russell King [off-list ref]
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
From: Daniel Kurtz <hidden> Date: 2016-01-28 12:35:20
On Tue, Jan 26, 2016 at 12:12 PM, Yong Wu [off-list ref] wrote:
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu@mediatek.com>
Tested-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Daniel Kurtz <redacted>
Tested-by: Daniel Kurtz <redacted>
Thanks!
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Tested-by: Philipp Zabel <redacted>
---
Signed-off-by: Matthias Brugger <redacted>
Joerg would you mind to take this through your branch?
Thanks,
Matthias
From: Philipp Zabel <hidden> Date: 2016-01-31 15:40:25
On Sun, Jan 31, 2016 at 12:00:41PM +0100, Matthias Brugger wrote:
On 26/01/16 05:12, Yong Wu wrote:
quoted
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Tested-by: Philipp Zabel <redacted>
---
Signed-off-by: Matthias Brugger <redacted>
Joerg would you mind to take this through your branch?
Could you put it on a separate branch that I may also merge into the DRM
driver pull request?
regards
Philipp
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Jan 31, 2016 at 12:00:41PM +0100, Matthias Brugger wrote:
On 26/01/16 05:12, Yong Wu wrote:
quoted
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Tested-by: Philipp Zabel <redacted>
---
Signed-off-by: Matthias Brugger <redacted>
Joerg would you mind to take this through your branch?
Hmm, I somehow missed the patch-set, at least I can't find the v8
patches in my inbox.
Yong, can you please re-send with all Acks and other tags added?
Thanks,
Joerg
From: Robin Murphy <robin.murphy@arm.com> Date: 2016-02-16 15:32:19
Hi Joerg,
On 16/02/16 14:11, Joerg Roedel wrote:
On Sun, Jan 31, 2016 at 12:00:41PM +0100, Matthias Brugger wrote:
quoted
On 26/01/16 05:12, Yong Wu wrote:
quoted
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu@mediatek.com>
Tested-by: Philipp Zabel <p.zabel@pengutronix.de>
---
Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
Joerg would you mind to take this through your branch?
Hmm, I somehow missed the patch-set, at least I can't find the v8
patches in my inbox.
Yong, can you please re-send with all Acks and other tags added?
Just to note patch 4 of this series also depends on the v3 io-pgtable
short-descriptor series posted separately[1] - is that on your radar
already or would you like that resent as well?
Robin.
[1]:http://thread.gmane.org/gmane.linux.kernel.iommu/12007
On Tue, Feb 16, 2016 at 03:32:11PM +0000, Robin Murphy wrote:
Hi Joerg,
On 16/02/16 14:11, Joerg Roedel wrote:
quoted
On Sun, Jan 31, 2016 at 12:00:41PM +0100, Matthias Brugger wrote:
quoted
On 26/01/16 05:12, Yong Wu wrote:
quoted
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Tested-by: Philipp Zabel <redacted>
---
Signed-off-by: Matthias Brugger <redacted>
Joerg would you mind to take this through your branch?
Hmm, I somehow missed the patch-set, at least I can't find the v8
patches in my inbox.
Yong, can you please re-send with all Acks and other tags added?
Just to note patch 4 of this series also depends on the v3
io-pgtable short-descriptor series posted separately[1] - is that on
your radar already or would you like that resent as well?
No, that was not on my radar, I somehow expected Will to handle this
series :)
So please resend that as well.
Thanks,
Joerg
From: Will Deacon <hidden> Date: 2016-02-16 16:19:59
On Tue, Feb 16, 2016 at 05:10:09PM +0100, Joerg Roedel wrote:
On Tue, Feb 16, 2016 at 03:32:11PM +0000, Robin Murphy wrote:
quoted
On 16/02/16 14:11, Joerg Roedel wrote:
quoted
On Sun, Jan 31, 2016 at 12:00:41PM +0100, Matthias Brugger wrote:
quoted
On 26/01/16 05:12, Yong Wu wrote:
quoted
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu@mediatek.com>
Tested-by: Philipp Zabel <p.zabel@pengutronix.de>
---
Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
Joerg would you mind to take this through your branch?
Hmm, I somehow missed the patch-set, at least I can't find the v8
patches in my inbox.
Yong, can you please re-send with all Acks and other tags added?
Just to note patch 4 of this series also depends on the v3
io-pgtable short-descriptor series posted separately[1] - is that on
your radar already or would you like that resent as well?
No, that was not on my radar, I somehow expected Will to handle this
series :)
I'm more than happy to bake a branch containing all the page table stuff,
but Yong's stuff depends on it so I'll work with whatever is easiest for
you.
Will
On Tue, Feb 16, 2016 at 04:20:00PM +0000, Will Deacon wrote:
I'm more than happy to bake a branch containing all the page table stuff,
but Yong's stuff depends on it so I'll work with whatever is easiest for
you.
Okay, to the best is if you would collect all the page table patches and
send me a pull-request. I pull that into my tree then and put Yong's
stuff on-top.
Joerg
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Will Deacon <hidden> Date: 2016-02-16 16:28:00
On Tue, Feb 16, 2016 at 05:26:41PM +0100, Joerg Roedel wrote:
On Tue, Feb 16, 2016 at 04:20:00PM +0000, Will Deacon wrote:
quoted
I'm more than happy to bake a branch containing all the page table stuff,
but Yong's stuff depends on it so I'll work with whatever is easiest for
you.
Okay, to the best is if you would collect all the page table patches and
send me a pull-request. I pull that into my tree then and put Yong's
stuff on-top.
Okey doke, I'll put something together this week.
Cheers,
Will
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 2016-02-16 at 15:11 +0100, Joerg Roedel wrote:
On Sun, Jan 31, 2016 at 12:00:41PM +0100, Matthias Brugger wrote:
quoted
On 26/01/16 05:12, Yong Wu wrote:
quoted
This patch add SMI(Smart Multimedia Interface) driver. This driver
is responsible to enable/disable iommu and control the power domain
and clocks of each local arbiter.
Signed-off-by: Yong Wu <yong.wu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Tested-by: Philipp Zabel <redacted>
---
Signed-off-by: Matthias Brugger <redacted>
Joerg would you mind to take this through your branch?
Hmm, I somehow missed the patch-set, at least I can't find the v8
patches in my inbox.
Yong, can you please re-send with all Acks and other tags added?
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Philipp Zabel <p.zabel@pengutronix.de> Date: 2016-02-18 16:51:50
Hi Joerg,
Am Dienstag, den 16.02.2016, 17:26 +0100 schrieb Joerg Roedel:
On Tue, Feb 16, 2016 at 04:20:00PM +0000, Will Deacon wrote:
quoted
I'm more than happy to bake a branch containing all the page table stuff,
but Yong's stuff depends on it so I'll work with whatever is easiest for
you.
Okay, to the best is if you would collect all the page table patches and
send me a pull-request. I pull that into my tree then and put Yong's
stuff on-top.
could you provide a branch that I may then pull in, stack the
mediatek-drm driver patches (that depend on the SMI driver) on top and
have them merged via drm-next?
regards
Philipp
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html