Die Seite ist von 2007...also auch etwas alles anders als es "heute" gemacht wird 😉
Bei setpci mußt Du inzwischen die Breite des zu setzenden Registers mit angeben, und zwar als .B, .W oder .L (Byte, Word, Long).
Jetzt mal ganz ohne Gewähr, weil ich es nicht nachvollziehen/nachstellen kann (ich gehe von Byte aus):
setpci -v -H1 -s 0:0.0 D2.B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2.B) | 0x80))))
setpci -v -H1 -s 0:0.0 D5.B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5.B) | 0x02)))
setpci ist aber mit Vorsicht zu genießen...ich würde auf jeden Fall vorher versuchen nachzuvollziehen, was Du da genau machst und erst dann die Aktion ausführen. Ich könnte mir vorstellen, daß Du da auch "permanente" Bereiche überschreiben kannst...
Mit
setpci -H1 -s 0:0.0 D2.B
setpci -H1 -s 0:0.0 D5.B
(als root!) kannst Du Dir anschauen, was er grade in dem Register drin stehen hat. Dies verknüpft er dann mit oder 0x80 bzw. 0x02 (binär) und würde es dann mit dem "äußeren" setpci Befehl in das Register schreiben.
Viel Spaß 🙂