mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
Merge pull request #1457 from anholt/rpi-4.4.y-vc4-hpd
Rpi 4.4.y: HDMI hotplug detection, overlay cleanup
This commit is contained in:
@@ -116,6 +116,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&hdmi {
|
||||||
|
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
uart0 = <&uart0>,"status";
|
uart0 = <&uart0>,"status";
|
||||||
|
|||||||
@@ -110,6 +110,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&hdmi {
|
||||||
|
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
uart0 = <&uart0>,"status";
|
uart0 = <&uart0>,"status";
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
#include "dt-bindings/clock/bcm2835.h"
|
||||||
#include <dt-bindings/clock/bcm2835-aux.h>
|
#include <dt-bindings/clock/bcm2835-aux.h>
|
||||||
|
#include "dt-bindings/power/raspberrypi-power.h"
|
||||||
|
#include "dt-bindings/gpio/gpio.h"
|
||||||
#include "skeleton.dtsi"
|
#include "skeleton.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
@@ -170,6 +173,18 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pixelvalve0: pixelvalve@7e206000 {
|
||||||
|
compatible = "brcm,bcm2835-pixelvalve0";
|
||||||
|
reg = <0x7e206000 0x100>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
pixelvalve1: pixelvalve@7e207000 {
|
||||||
|
compatible = "brcm,bcm2835-pixelvalve1";
|
||||||
|
reg = <0x7e207000 0x100>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
pwm: pwm@7e20c000 {
|
pwm: pwm@7e20c000 {
|
||||||
compatible = "brcm,bcm2835-pwm";
|
compatible = "brcm,bcm2835-pwm";
|
||||||
reg = <0x7e20c000 0x28>;
|
reg = <0x7e20c000 0x28>;
|
||||||
@@ -227,6 +242,12 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hvs: hvs@7e400000 {
|
||||||
|
compatible = "brcm,bcm2835-hvs";
|
||||||
|
reg = <0x7e400000 0x6000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
i2c1: i2c@7e804000 {
|
i2c1: i2c@7e804000 {
|
||||||
compatible = "brcm,bcm2708-i2c";
|
compatible = "brcm,bcm2708-i2c";
|
||||||
reg = <0x7e804000 0x1000>;
|
reg = <0x7e804000 0x1000>;
|
||||||
@@ -261,6 +282,25 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pixelvalve2: pixelvalve@7e807000 {
|
||||||
|
compatible = "brcm,bcm2835-pixelvalve2";
|
||||||
|
reg = <0x7e807000 0x100>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
hdmi: hdmi@7e902000 {
|
||||||
|
compatible = "brcm,bcm2835-hdmi";
|
||||||
|
reg = <0x7e902000 0x600>,
|
||||||
|
<0x7e808000 0x100>;
|
||||||
|
ddc = <&i2c2>;
|
||||||
|
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||||
|
clocks = <&cprman BCM2835_PLLH_PIX>,
|
||||||
|
<&cprman BCM2835_CLOCK_HSM>;
|
||||||
|
clock-names = "pixel", "hdmi";
|
||||||
|
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
usb: usb@7e980000 {
|
usb: usb@7e980000 {
|
||||||
compatible = "brcm,bcm2708-usb";
|
compatible = "brcm,bcm2708-usb";
|
||||||
reg = <0x7e980000 0x10000>,
|
reg = <0x7e980000 0x10000>,
|
||||||
@@ -269,6 +309,12 @@
|
|||||||
<1 9>;
|
<1 9>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
v3d: v3d@7ec00000 {
|
||||||
|
compatible = "brcm,vc4-v3d";
|
||||||
|
reg = <0x7ec00000 0x1000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
firmware: firmware {
|
firmware: firmware {
|
||||||
compatible = "raspberrypi,bcm2835-firmware";
|
compatible = "raspberrypi,bcm2835-firmware";
|
||||||
mboxes = <&mailbox>;
|
mboxes = <&mailbox>;
|
||||||
@@ -303,6 +349,11 @@
|
|||||||
firmware = <&firmware>;
|
firmware = <&firmware>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gpu: gpu {
|
||||||
|
compatible = "brcm,bcm2835-vc4";
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
/* Onboard audio */
|
/* Onboard audio */
|
||||||
audio: audio {
|
audio: audio {
|
||||||
compatible = "brcm,bcm2835-audio";
|
compatible = "brcm,bcm2835-audio";
|
||||||
|
|||||||
@@ -116,6 +116,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&hdmi {
|
||||||
|
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
uart0 = <&uart0>,"status";
|
uart0 = <&uart0>,"status";
|
||||||
|
|||||||
@@ -161,6 +161,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&hdmi {
|
||||||
|
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "8250.nr_uarts=1";
|
bootargs = "8250.nr_uarts=1";
|
||||||
|
|||||||
@@ -5,129 +5,125 @@
|
|||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
/plugin/;
|
/plugin/;
|
||||||
|
|
||||||
#include "dt-bindings/clock/bcm2835.h"
|
|
||||||
#include "dt-bindings/power/raspberrypi-power.h"
|
|
||||||
#include "dt-bindings/gpio/gpio.h"
|
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
|
compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
|
||||||
|
|
||||||
fragment@0 {
|
fragment@0 {
|
||||||
target = <&i2c2>;
|
|
||||||
__overlay__ {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@1 {
|
|
||||||
target = <&cprman>;
|
|
||||||
__overlay__ {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@2 {
|
|
||||||
target = <&fb>;
|
|
||||||
__overlay__ {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@3 {
|
|
||||||
target = <&soc>;
|
|
||||||
__overlay__ {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
|
||||||
|
|
||||||
pixelvalve@7e206000 {
|
|
||||||
compatible = "brcm,bcm2835-pixelvalve0";
|
|
||||||
reg = <0x7e206000 0x100>;
|
|
||||||
interrupts = <2 13>; /* pwa0 */
|
|
||||||
};
|
|
||||||
|
|
||||||
pixelvalve@7e207000 {
|
|
||||||
compatible = "brcm,bcm2835-pixelvalve1";
|
|
||||||
reg = <0x7e207000 0x100>;
|
|
||||||
interrupts = <2 14>; /* pwa1 */
|
|
||||||
};
|
|
||||||
|
|
||||||
hvs@7e400000 {
|
|
||||||
compatible = "brcm,bcm2835-hvs";
|
|
||||||
reg = <0x7e400000 0x6000>;
|
|
||||||
interrupts = <2 1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
pixelvalve@7e807000 {
|
|
||||||
compatible = "brcm,bcm2835-pixelvalve2";
|
|
||||||
reg = <0x7e807000 0x100>;
|
|
||||||
interrupts = <2 10>; /* pixelvalve */
|
|
||||||
};
|
|
||||||
|
|
||||||
hdmi@7e902000 {
|
|
||||||
compatible = "brcm,bcm2835-hdmi";
|
|
||||||
reg = <0x7e902000 0x600>,
|
|
||||||
<0x7e808000 0x100>;
|
|
||||||
interrupts = <2 8>, <2 9>;
|
|
||||||
ddc = <&i2c2>;
|
|
||||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
|
||||||
clocks = <&cprman BCM2835_PLLH_PIX>,
|
|
||||||
<&cprman BCM2835_CLOCK_HSM>;
|
|
||||||
clock-names = "pixel", "hdmi";
|
|
||||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
|
||||||
};
|
|
||||||
|
|
||||||
v3d@7ec00000 {
|
|
||||||
compatible = "brcm,vc4-v3d";
|
|
||||||
reg = <0x7ec00000 0x1000>;
|
|
||||||
interrupts = <1 10>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpu@7e4c0000 {
|
|
||||||
compatible = "brcm,bcm2835-vc4";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fragment@4 {
|
|
||||||
target-path = "/chosen";
|
target-path = "/chosen";
|
||||||
__overlay__ {
|
__overlay__ {
|
||||||
bootargs = "cma=256M@256M";
|
bootargs = "cma=256M@256M";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fragment@5 {
|
fragment@1 {
|
||||||
target-path = "/chosen";
|
target-path = "/chosen";
|
||||||
__dormant__ {
|
__dormant__ {
|
||||||
bootargs = "cma=192M@256M";
|
bootargs = "cma=192M@256M";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fragment@6 {
|
fragment@2 {
|
||||||
target-path = "/chosen";
|
target-path = "/chosen";
|
||||||
__dormant__ {
|
__dormant__ {
|
||||||
bootargs = "cma=128M@128M";
|
bootargs = "cma=128M@128M";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fragment@7 {
|
fragment@3 {
|
||||||
target-path = "/chosen";
|
target-path = "/chosen";
|
||||||
__dormant__ {
|
__dormant__ {
|
||||||
bootargs = "cma=96M@128M";
|
bootargs = "cma=96M@128M";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fragment@8 {
|
fragment@4 {
|
||||||
target-path = "/chosen";
|
target-path = "/chosen";
|
||||||
__dormant__ {
|
__dormant__ {
|
||||||
bootargs = "cma=64M@64M";
|
bootargs = "cma=64M@64M";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fragment@5 {
|
||||||
|
target = <&i2c2>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@6 {
|
||||||
|
target = <&cprman>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@7 {
|
||||||
|
target = <&fb>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@8 {
|
||||||
|
target = <&pixelvalve0>;
|
||||||
|
__overlay__ {
|
||||||
|
interrupts = <2 13>; /* pwa0 */
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@9 {
|
||||||
|
target = <&pixelvalve1>;
|
||||||
|
__overlay__ {
|
||||||
|
interrupts = <2 14>; /* pwa1 */
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@10 {
|
||||||
|
target = <&pixelvalve2>;
|
||||||
|
__overlay__ {
|
||||||
|
interrupts = <2 10>; /* pixelvalve */
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@11 {
|
||||||
|
target = <&hvs>;
|
||||||
|
__overlay__ {
|
||||||
|
interrupts = <2 1>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@12 {
|
||||||
|
target = <&hdmi>;
|
||||||
|
__overlay__ {
|
||||||
|
interrupts = <2 8>, <2 9>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@13 {
|
||||||
|
target = <&v3d>;
|
||||||
|
__overlay__ {
|
||||||
|
interrupts = <1 10>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fragment@14 {
|
||||||
|
target = <&gpu>;
|
||||||
|
__overlay__ {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
__overrides__ {
|
__overrides__ {
|
||||||
cma-256 = <0>,"+4-5-6-7-8";
|
cma-256 = <0>,"+0-1-2-3-4";
|
||||||
cma-192 = <0>,"-4+5-6-7-8";
|
cma-192 = <0>,"-0+1-2-3-4";
|
||||||
cma-128 = <0>,"-4-5+6-7-8";
|
cma-128 = <0>,"-0-1+2-3-4";
|
||||||
cma-96 = <0>,"-4-5-6+7-8";
|
cma-96 = <0>,"-0-1-2+3-4";
|
||||||
cma-64 = <0>,"-4-5-6-7+8";
|
cma-64 = <0>,"-0-1-2-3+4";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -166,8 +166,6 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
|||||||
struct drm_device *dev = connector->dev;
|
struct drm_device *dev = connector->dev;
|
||||||
struct vc4_dev *vc4 = to_vc4_dev(dev);
|
struct vc4_dev *vc4 = to_vc4_dev(dev);
|
||||||
|
|
||||||
return connector_status_connected;
|
|
||||||
|
|
||||||
if (vc4->hdmi->hpd_gpio) {
|
if (vc4->hdmi->hpd_gpio) {
|
||||||
if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^
|
if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^
|
||||||
vc4->hdmi->hpd_active_low)
|
vc4->hdmi->hpd_active_low)
|
||||||
|
|||||||
Reference in New Issue
Block a user