Tegra DRM device tree bindings
Mark Zhang
markz at nvidia.com
Thu Jul 5 22:29:42 PDT 2012
> From: linux-tegra-owner at vger.kernel.org [mailto:linux-tegra-
> owner at vger.kernel.org] On Behalf Of Thierry Reding
> Sent: Thursday, July 05, 2012 8:15 PM
> To: linux-tegra at vger.kernel.org
> Cc: devicetree-discuss at lists.ozlabs.org; dri-devel at lists.freedesktop.org
> Subject: Re: Tegra DRM device tree bindings
>
> * PGP Signed by an unknown key
>
> Here's a new proposal that should address all issues collected during the
> discussion of the previous one:
>
> From tegra20.dtsi:
>
> host1x {
> compatible = "nvidia,tegra20-host1x", "simple-bus";
> reg = <0x50000000 0x00024000>;
> interrupts = <0 65 0x04 /* mpcore syncpt */
> 0 67 0x04>; /* mpcore general */
>
> #address-cells = <1>;
> #size-cells = <1>;
>
> ranges = <0x54000000 0x54000000 0x04000000>;
>
> /* video-encoding/decoding */
> mpe {
> reg = <0x54040000 0x00040000>;
> interrupts = <0 68 0x04>;
> };
>
> /* video input */
> vi {
> reg = <0x54080000 0x00040000>;
> interrupts = <0 69 0x04>;
> };
>
> /* EPP */
> epp {
> reg = <0x540c0000 0x00040000>;
> interrupts = <0 70 0x04>;
> };
>
> /* ISP */
> isp {
> reg = <0x54100000 0x00040000>;
> interrupts = <0 71 0x04>;
> };
>
> /* 2D engine */
> gr2d {
> reg = <0x54140000 0x00040000>;
> interrupts = <0 72 0x04>;
> };
>
> /* 3D engine */
> gr3d {
> reg = <0x54180000 0x00040000>;
> };
>
> /* display controllers */
> dc at 54200000 {
> compatible = "nvidia,tegra20-dc";
> reg = <0x54200000 0x00040000>;
> interrupts = <0 73 0x04>;
>
> rgb {
> status = "disabled";
> };
> };
>
> dc at 54240000 {
> compatible = "nvidia,tegra20-dc";
> reg = <0x54240000 0x00040000>;
> interrupts = <0 74 0x04>;
>
> rgb {
> status = "disabled";
> };
> };
>
> /* outputs */
> hdmi {
> compatible = "nvidia,tegra20-hdmi";
> reg = <0x54280000 0x00040000>;
> interrupts = <0 75 0x04>;
> status = "disabled";
> };
>
> tvo {
> compatible = "nvidia,tegra20-tvo";
> reg = <0x542c0000 0x00040000>;
> interrupts = <0 76 0x04>;
> status = "disabled";
> };
>
> dsi {
> compatible = "nvidia,tegra20-dsi";
> reg = <0x54300000 0x00040000>;
> status = "disabled";
> };
> };
>
> From tegra20-medcom.dts:
>
> host1x {
> dc at 54200000 {
> rgb {
> nvidia,edid = /incbin/("tegra20-medcom.edid");
> status = "okay";
> };
> };
> };
>
> From tegra20-plutux.dts:
>
> host1x {
> hdmi {
> vdd-supply = <&ldo7_reg>;
> pll-supply = <&ldo8_reg>;
>
> nvidia,hpd-gpio = <&gpio 111 0>; /* PN7 */
> nvidia,ddc-i2c-bus = <&ddc>;
>
> status = "okay";
> };
> };
>
> One problem I've come across when trying to get some rudimentary code
> working with this is that there's no longer a device which the DRM driver can bind
> to, because the top-level device (host1x) now has a separate driver.
>
> I've briefly discussed this with Dave Airlie on IRC and there are basically two
> solutions:
>
> a) Use a fake platform device, instantiated from the device tree or at
> module initialization time, so that the drm_platform_init()
> function can be used.
If we change the dts to this version, that means we should register all drivers(dc/rgb/dsi...) during host1x driver initialization.
In that case, I think we can register drm driver as well.
It's not a good idea to add drm into dts cause just as you said, it's not a real device at all.
> b) Implement a custom drm_bus and reimplement most of the
> functionality provided by drm_platform_init().
>
> Alternative a) is what Sascha has been doing for i.MX and is the most
> straightforward. One variant of this would be to add another virtual device node
> below host1x that groups gr2d, gr3d, both dcs and the three output nodes. The
> down-side of this being that it doesn't describe the hardware of course, and
> therefore really shouldn't go into the device tree. Instantiating at module
> initalization time has the disadvantage that the parent-child relationship is lost.
>
> Using b) isn't optimal either because DRM requires at least a struct device which
> can be associated with the drm_device. So the question is which struct device
> that should be?
>
> Thierry
>
> * Unknown Key
> * 0x7F3EB3A1
More information about the dri-devel
mailing list