gsi_irq_type_update(gsi, gsi->type_enabled_bitmap & ~BIT(type_id));
 }
 
-/* Turn off all GSI interrupts initially */
+/* Turn off all GSI interrupts initially; there is no gsi_irq_teardown() */
 static void gsi_irq_setup(struct gsi *gsi)
 {
        /* Disable all interrupt types */
        iowrite32(0, gsi->virt + GSI_CNTXT_GSI_IRQ_EN_OFFSET);
 }
 
-/* Turn off all GSI interrupts when we're all done */
-static void gsi_irq_teardown(struct gsi *gsi)
-{
-       /* Nothing to do */
-}
-
 /* Event ring commands are performed one at a time.  Their completion
  * is signaled by the event ring control GSI interrupt type, which is
  * only enabled when we issue an event ring command.  Only the event
        }
 }
 
-/* Program a channel for use */
+/* Program a channel for use; there is no gsi_channel_deprogram() */
 static void gsi_channel_program(struct gsi_channel *channel, bool doorbell)
 {
        size_t size = channel->tre_ring.count * GSI_RING_ELEMENT_SIZE;
        /* All done! */
 }
 
-static void gsi_channel_deprogram(struct gsi_channel *channel)
-{
-       /* Nothing to do */
-}
-
 static int __gsi_channel_start(struct gsi_channel *channel, bool start)
 {
        struct gsi *gsi = channel->gsi;
        return event_bitmap;
 }
 
-/* Setup function for event rings */
-static void gsi_evt_ring_setup(struct gsi *gsi)
-{
-       /* Nothing to do */
-}
-
-/* Inverse of gsi_evt_ring_setup() */
-static void gsi_evt_ring_teardown(struct gsi *gsi)
-{
-       /* Nothing to do */
-}
-
 /* Setup function for a single channel */
 static int gsi_channel_setup_one(struct gsi *gsi, u32 channel_id)
 {
 
        netif_napi_del(&channel->napi);
 
-       gsi_channel_deprogram(channel);
        gsi_channel_de_alloc_command(gsi, channel_id);
        gsi_evt_ring_reset_command(gsi, evt_ring_id);
        gsi_evt_ring_de_alloc_command(gsi, evt_ring_id);
        u32 mask;
        int ret;
 
-       gsi_evt_ring_setup(gsi);
        gsi_irq_enable(gsi);
 
        mutex_lock(&gsi->mutex);
        mutex_unlock(&gsi->mutex);
 
        gsi_irq_disable(gsi);
-       gsi_evt_ring_teardown(gsi);
 
        return ret;
 }
        mutex_unlock(&gsi->mutex);
 
        gsi_irq_disable(gsi);
-       gsi_evt_ring_teardown(gsi);
 }
 
 /* Setup function for GSI.  GSI firmware must be loaded and initialized */
 {
        struct device *dev = gsi->dev;
        u32 val;
-       int ret;
 
        /* Here is where we first touch the GSI hardware */
        val = ioread32(gsi->virt + GSI_GSI_STATUS_OFFSET);
                return -EIO;
        }
 
-       gsi_irq_setup(gsi);
+       gsi_irq_setup(gsi);             /* No matching teardown required */
 
        val = ioread32(gsi->virt + GSI_GSI_HW_PARAM_2_OFFSET);
 
        /* Writing 1 indicates IRQ interrupts; 0 would be MSI */
        iowrite32(1, gsi->virt + GSI_CNTXT_INTSET_OFFSET);
 
-       ret = gsi_channel_setup(gsi);
-       if (ret)
-               gsi_irq_teardown(gsi);
-
-       return ret;
+       return gsi_channel_setup(gsi);
 }
 
 /* Inverse of gsi_setup() */
 void gsi_teardown(struct gsi *gsi)
 {
        gsi_channel_teardown(gsi);
-       gsi_irq_teardown(gsi);
 }
 
 /* Initialize a channel's event ring */
        gsi_evt_ring_id_free(gsi, evt_ring_id);
 }
 
-/* Init function for event rings */
+/* Init function for event rings; there is no gsi_evt_ring_exit() */
 static void gsi_evt_ring_init(struct gsi *gsi)
 {
        u32 evt_ring_id = 0;
        while (++evt_ring_id < GSI_EVT_RING_COUNT_MAX);
 }
 
-/* Inverse of gsi_evt_ring_init() */
-static void gsi_evt_ring_exit(struct gsi *gsi)
-{
-       /* Nothing to do */
-}
-
 static bool gsi_channel_data_valid(struct gsi *gsi,
                                   const struct ipa_gsi_endpoint_data *data)
 {
        /* IPA v4.2 requires the AP to allocate channels for the modem */
        modem_alloc = gsi->version == IPA_VERSION_4_2;
 
-       gsi_evt_ring_init(gsi);
+       gsi_evt_ring_init(gsi);                 /* No matching exit required */
 
        /* The endpoint data array is indexed by endpoint name */
        for (i = 0; i < count; i++) {
                }
                gsi_channel_exit_one(&gsi->channel[data->channel_id]);
        }
-       gsi_evt_ring_exit(gsi);
 
        return ret;
 }
                gsi_channel_exit_one(&gsi->channel[channel_id]);
        while (channel_id--);
        gsi->modem_channel_bitmap = 0;
-
-       gsi_evt_ring_exit(gsi);
 }
 
 /* Init function for GSI.  GSI hardware does not need to be "ready" */