* Stephen Warren wrote: > On 04/12/2012 11:44 AM, Thierry Reding wrote: [...] > And given that, I don't think we should name the node after some > OS-specific software concept. Device tree is intended to model hardware. [...] > > Maybe one solution would be to have a top-level DRM device with a register > > map from 0x54000000 to 0x547fffff, which the TRM designates as "host > > registers". Then subnodes could be used for the subdevices. > > Ah yes, just what I was thinking above:-)
I came up with the following:
/* host1x */
host1x : host1x@50000000 {
reg = <0x50000000 0x00024000>;
interrupts = <0 64 0x04 /* cop syncpt */
0 65 0x04 /* mpcore syncpt */
0 66 0x04 /* cop general */
0 67 0x04>; /* mpcore general */
};
/* graphics host */
graphics@54000000 {
compatible = "nvidia,tegra20-graphics";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x54000000 0x08000000>;
host1x = <&host1x>;
/* video-encoding/decoding */
mpe@54040000 {
reg = <0x54040000 0x00040000>;
interrupts = <0 68 0x04>;
};
/* video input */
vi@54080000 {
reg = <0x54080000 0x00040000>;
interrupts = <0 69 0x04>;
};
/* EPP */
epp@540c0000 {
reg = <0x540c0000 0x00040000>;
interrupts = <0 70 0x04>;
}
/* ISP */
isp@54100000 {
reg = <0x54100000 0x00040000>;
interrupts = <0 71 0x04>;
};
/* 2D engine */
gr2d@54140000 {
reg = <0x54140000 0x00040000>;
interrupts = <0 72 0x04>;
};
/* 3D engine */
gr3d@54180000 {
reg = <0x54180000 0x00040000>;
};
/* display controllers */
disp1 : dc@54200000 {
compatible = "nvidia,tegra20-dc";
reg = <0x54200000 0x00040000>;
interrupts = <0 73 0x04>;
};
disp2 : dc@54240000 {
compatible = "nvidia,tegra20-dc";
reg = <0x54240000 0x00040000>;
interrupts = <0 74 0x04>;
};
/* outputs */
lvds : rgb {
compatible = "nvidia,tegra20-rgb";
};
hdmi : hdmi@54280000 {
compatible = "nvidia,tegra20-hdmi";
reg = <0x54280000 0x00040000>;
interrupts = <0 75 0x04>;
};
tvo : tvo@542c0000 {
compatible = "nvidia,tegra20-tvo";
reg = <0x542c0000 0x00040000>;
interrupts = <0 76 0x04>;
};
dsi : dsi@54300000 {
compatible = "nvidia,tegra20-dsi";
reg = <0x54300000 0x00040000>;
};
display-controllers = <&disp1 &disp2>;
outputs = <&lvds &hdmi &tvo &dsi>;
/* initial configuration */
configuration {
lvds {
display-controller = <&disp1>;
output = <&lvds>;
};
hdmi {
display-controller = <&disp2>;
output = <&hdmi>;
};
};
};
I added an additional node for the initial configuration so that the driver
knows which mapping to setup at boot. What I don't quite see yet is where to
attach EDID data or pass the phandle to the I2C controller for DDC/EDID
probing. The initial configuration is certainly not the right place. Perhaps
the outputs property should be made a node instead:
outputs {
lvds_out {
output = <&lvds>;
edid = <&edid>;
};
hdmi_out {
output = <&hdmi>;
ddc = <&i2c2>;
};
};
But then "outputs" should probably become something like "connectors"
instead and the initial configuration refers to the "_out" phandles.
Thierry
pgpV7A9U5ob2r.pgp
Description: PGP signature
_______________________________________________ iommu mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/iommu
