* just the HuC, but more are expected to land in the future).
  */
 
-static void gen8_guc_raise_irq(struct intel_guc *guc)
+void intel_guc_notify(struct intel_guc *guc)
 {
        struct intel_gt *gt = guc_to_gt(guc);
 
-       intel_uncore_write(gt->uncore, GUC_SEND_INTERRUPT, GUC_SEND_TRIGGER);
-}
-
-static void gen11_guc_raise_irq(struct intel_guc *guc)
-{
-       struct intel_gt *gt = guc_to_gt(guc);
-
-       intel_uncore_write(gt->uncore, GEN11_GUC_HOST_INTERRUPT, 0);
+       /*
+        * On Gen11+, the value written to the register is passes as a payload
+        * to the FW. However, the FW currently treats all values the same way
+        * (H2G interrupt), so we can just write the value that the HW expects
+        * on older gens.
+        */
+       intel_uncore_write(gt->uncore, guc->notify_reg, GUC_SEND_TRIGGER);
 }
 
 static inline i915_reg_t guc_send_reg(struct intel_guc *guc, u32 i)
        mutex_init(&guc->send_mutex);
        spin_lock_init(&guc->irq_lock);
        if (INTEL_GEN(i915) >= 11) {
-               guc->notify = gen11_guc_raise_irq;
+               guc->notify_reg = GEN11_GUC_HOST_INTERRUPT;
                guc->interrupts.reset = gen11_reset_guc_interrupts;
                guc->interrupts.enable = gen11_enable_guc_interrupts;
                guc->interrupts.disable = gen11_disable_guc_interrupts;
        } else {
-               guc->notify = gen8_guc_raise_irq;
+               guc->notify_reg = GUC_SEND_INTERRUPT;
                guc->interrupts.reset = gen9_reset_guc_interrupts;
                guc->interrupts.enable = gen9_enable_guc_interrupts;
                guc->interrupts.disable = gen9_disable_guc_interrupts;
 
                enum forcewake_domains fw_domains;
        } send_regs;
 
+       /* register used to send interrupts to the GuC FW */
+       i915_reg_t notify_reg;
+
        /* Store msg (e.g. log flush) that we see while CTBs are disabled */
        u32 mmio_msg;
 
        /* To serialize the intel_guc_send actions */
        struct mutex send_mutex;
-
-       /* GuC's FW specific notify function */
-       void (*notify)(struct intel_guc *guc);
 };
 
 static
                                 response_buf, response_buf_size);
 }
 
-static inline void intel_guc_notify(struct intel_guc *guc)
-{
-       guc->notify(guc);
-}
-
 static inline void intel_guc_to_host_event_handler(struct intel_guc *guc)
 {
        intel_guc_ct_event_handler(&guc->ct);
 void intel_guc_write_params(struct intel_guc *guc);
 int intel_guc_init(struct intel_guc *guc);
 void intel_guc_fini(struct intel_guc *guc);
+void intel_guc_notify(struct intel_guc *guc);
 int intel_guc_send_mmio(struct intel_guc *guc, const u32 *action, u32 len,
                        u32 *response_buf, u32 response_buf_size);
 int intel_guc_to_host_process_recv_msg(struct intel_guc *guc,