drm/i915: split irq handling into per-chipset functions