[PATCH v2] ARM: dts: Add TVE/TVC and ILI9322 panel to DIR-685
David Lechner
david at lechnology.com
Mon Jan 1 11:14:32 PST 2018
On 12/22/2017 02:51 AM, Linus Walleij wrote:
> This adds the TVE200/TVC TV-encoder and the Ilitek ILI9322 panel
> to the DIR-685 device tree.
>
> This brings graphics to this funky router and it is possible to
> even run a console on its tiny screen.
>
> Incidentally this requires us to disable the access to the
> parallel (NOR) flash, as the communication pins to the panel
> are shared with the flash memory.
>
> To access the flash, a separate kernel with the panel disabled
> and the flash enabled should be booted. The pin control selecting
> whether to use the lines cannot be altered at runtime due to
> hardware constraints.
>
> Cc: David Lechner <david at lechnology.com>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Ben Dooks <ben.dooks at codethink.co.uk>
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> ---
> ChangeLog v1->v2:
> - Rename node from "tvc" to "display-controller"
> - Drop all the surplus device tree config that we are now
> instead open coding in the driver, as per the request of
> the DT maintainers.
> - Tested on the D-Link DIR-685.
> ---
> arch/arm/boot/dts/gemini-dlink-dir-685.dts | 63 +++++++++++++++++++++++++++++-
> 1 file changed, 62 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/boot/dts/gemini-dlink-dir-685.dts b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
> index e75e2d44371c..0a86b784cf7f 100644
> --- a/arch/arm/boot/dts/gemini-dlink-dir-685.dts
> +++ b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
> @@ -45,6 +45,47 @@
> };
> };
>
> + vdisp: regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "display-power";
> + regulator-min-microvolt = <3600000>;
> + regulator-max-microvolt = <3600000>;
> + /* Collides with LCD E */
> + gpio = <&gpio0 16 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + spi {
> + compatible = "spi-gpio";
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + /* Collides with IDE pins, that's cool (we do not use them) */
> + gpio-sck = <&gpio1 5 GPIO_ACTIVE_HIGH>;
> + gpio-miso = <&gpio1 8 GPIO_ACTIVE_HIGH>;
> + gpio-mosi = <&gpio1 7 GPIO_ACTIVE_HIGH>;
> + /* Collides with pflash CE1, not so cool */
> + cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
> + num-chipselects = <1>;
> +
> + panel: display at 0 {
> + compatible = "dlink,dir-685-panel", "ilitek,ili9322";
> + reg = <0>;
> + /* 50 ns min period = 20 MHz */
> + spi-max-frequency = <20000000>;
> + spi-cpol; /* Clock active low */
> + vcc-supply = <&vdisp>;
> + iovcc-supply = <&vdisp>;
> + vci-supply = <&vdisp>;
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <&display_out>;
> + };
> + };
> + };
> + };
> +
> leds {
> compatible = "gpio-leds";
> led-wps {
> @@ -115,7 +156,16 @@
>
> soc {
> flash at 30000000 {
> - status = "okay";
> + /*
> + * Flash access is by default disabled, because it
> + * collides with the Chip Enable signal for the display
> + * panel, that reuse the parallel flash Chip Select 1
> + * (CS1). Enabling flash makes graphics stop working.
> + *
> + * We might be able to hack around this by letting
> + * GPIO poke around in the flash controller registers.
> + */
> + /* status = "okay"; */
Isn't the default status = "okay"? So you would need to explicitly say status = "disabled".
> /* 32MB of flash */
> reg = <0x30000000 0x02000000>;
>
> @@ -242,5 +292,16 @@
> ata at 63000000 {
> status = "okay";
> };
> +
> + display-controller at 6a000000 {
> + status = "okay";
> +
> + port at 0 {
> + reg = <0>;
> + display_out: endpoint {
> + remote-endpoint = <&panel_in>;
> + };
> + };
> + };
> };
> };
>
More information about the linux-arm-kernel
mailing list