Created attachment 50402 [details]
I have an AMD Radeon HD 6310 with free radeon drivers running. Xorg version is 7.6, xserver is 1.10.3.
I tried to define a udev rule to change my monitor settings automatically when I connect a VGA or an HDMI cable. Connecting works fine but disconnecting is not recognized.
udevadm monitor shows:
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[100.176249] change /devices/pci0000:00/0000:00:01.0/drm/card0 (drm)
UDEV [100.869104] change /devices/pci0000:00/0000:00:01.0/drm/card0 (drm)
for connecting. For disconnecting nothing happens.
I hope this is the right place to file this as a bug.
Every help is appreciated!
Created attachment 50403 [details]
I've got a similar problem with a Mobility Radeon HD 4300 Series card, there is no change recognized on connect and disconnect.
Any hint where to look?
(In reply to comment #2)
> I've got a similar problem with a Mobility Radeon HD 4300 Series card, there is
> no change recognized on connect and disconnect.
> Any hint where to look?
Hotplug interrupts only work for digital displays (TMDS/DP). Analog displays require polling.
Check your dmesg output and make sure there is an HPD pin assigned to the digital display connector you are trying to use. It's also possible your OEM did not wire up the pin properly.
Mh okay, I my observations were related to HDMI (not VGA).
Is there a way to find out if a "HPD pin [is] assigned to the
digital display connector"?
(In reply to comment #4)
> Mh okay, I my observations were related to HDMI (not VGA).
> Is there a way to find out if a "HPD pin [is] assigned to the
> digital display connector"?
Make sure your have the rlc firmware loaded as it's required for the interrupt controller to work.
Check your dmesg. It should show something like:
[drm] Connector 1:
[drm] DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 0x644c
[drm] DFP1: INTERNAL_UNIPHY
In this case HPD2 has been (in theory) wired to the hdmi port. Plug/unplug in your hdmi port and check if bit 1 of any of the DC_HPDx_INT_STATUS regs changes when you connect/disconnect the monitor.
#define DC_HPD1_INT_STATUS 0x7d00
#define DC_HPD2_INT_STATUS 0x7d0c
#define DC_HPD3_INT_STATUS 0x7d18
#define DC_HPD4_INT_STATUS 0x7d24
#define DC_HPD5_INT_STATUS 0x7dc0
#define DC_HPD6_INT_STATUS 0x7df4
You can use radeonreg:
to dump registers. E.g. (as root),
./radeonreg regmatch 0x7d00
*** This bug has been marked as a duplicate of bug 41561 ***