Could you try with the full path to firmware.sh and see if it helps?
i.e. SUBSYSTEM=="firmware", ACTION=="add", RUN+="/lib/udev/firmware.sh"
Same result with "/lib/udev/firmware.sh" in /etc/udev/rules.d/50-firmware.rules.
The
syslog shows that firmware.sh is found/run because you see this, but after the 60sec delay and time-out from the Radeon driver so I think it's from a different firmware loader call (for the I2C driver):
Jun 5 20:58:11 TPT60 user.notice firmware.sh[4435]: udev firmware loader misses sysfs directory
...
Jun 5 10:58:11 TPT60 daemon.info udevd[4267]: 'firmware.sh' [4435] exit with return code 1
And that error message comes from firmware.sh:
if [ ! -e /sys$DEVPATH/loading ]; then
err "udev firmware loader misses sysfs directory"
exit 1
fi
It looks like firmware.sh succeeds for the Radeon driver, otherwise there'd be another "'firmware.sh' [????] exit with return code 1" error in syslog. But I think something's not right with how the kernel/driver reads the firmware data from sysfs after firmware.sh has copied it there.