/* Now update the scratch registers for GPI protocol */
        gpi = &scr.gpi;
-       gpi->max_outstanding_tre = gsi_channel_trans_tre_max(gsi, channel_id) *
+       gpi->max_outstanding_tre = channel->trans_tre_max *
                                        GSI_RING_ELEMENT_SIZE;
        gpi->outstanding_threshold = 2 * GSI_RING_ELEMENT_SIZE;
 
        channel->gsi = gsi;
        channel->toward_ipa = data->toward_ipa;
        channel->command = command;
-       channel->tlv_count = data->channel.tlv_count;
+       channel->trans_tre_max = data->channel.tlv_count;
        channel->tre_count = tre_count;
        channel->event_count = data->channel.event_count;
 
        struct gsi_channel *channel = &gsi->channel[channel_id];
 
        /* Hardware limit is channel->tre_count - 1 */
-       return channel->tre_count - (channel->tlv_count - 1);
-}
-
-/* Returns the maximum number of TREs in a single transaction for a channel */
-u32 gsi_channel_trans_tre_max(struct gsi *gsi, u32 channel_id)
-{
-       struct gsi_channel *channel = &gsi->channel[channel_id];
-
-       return channel->tlv_count;
+       return channel->tre_count - (channel->trans_tre_max - 1);
 }
 
        bool toward_ipa;
        bool command;                   /* AP command TX channel or not */
 
-       u8 tlv_count;                   /* # entries in TLV FIFO */
+       u8 trans_tre_max;               /* max TREs in a transaction */
        u16 tre_count;
        u16 event_count;
 
  */
 u32 gsi_channel_tre_max(struct gsi *gsi, u32 channel_id);
 
-/**
- * gsi_channel_trans_tre_max() - Maximum TREs in a single transaction
- * @gsi:       GSI pointer
- * @channel_id:        Channel whose limit is to be returned
- *
- * Return:      The maximum TRE count per transaction on the channel
- */
-u32 gsi_channel_trans_tre_max(struct gsi *gsi, u32 channel_id);
-
 /**
  * gsi_channel_start() - Start an allocated GSI channel
  * @gsi:       GSI pointer
 
        struct gsi_trans_info *trans_info;
        struct gsi_trans *trans;
 
-       if (WARN_ON(tre_count > gsi_channel_trans_tre_max(gsi, channel_id)))
+       if (WARN_ON(tre_count > channel->trans_tre_max))
                return NULL;
 
        trans_info = &channel->trans_info;
         * element is used to fill a single TRE when the transaction is
         * committed.  So we need as many scatterlist elements as the
         * maximum number of TREs that can be outstanding.
-        *
-        * All TREs in a transaction must fit within the channel's TLV FIFO.
-        * A transaction on a channel can allocate as many TREs as that but
-        * no more.
         */
        ret = gsi_trans_pool_init(&trans_info->sg_pool,
                                  sizeof(struct scatterlist),
-                                 tre_max, channel->tlv_count);
+                                 tre_max, channel->trans_tre_max);
        if (ret)
                goto err_trans_pool_exit;
 
 
        /* This is as good a place as any to validate build constants */
        ipa_cmd_validate_build();
 
-       /* Even though command payloads are allocated one at a time,
-        * a single transaction can require up to tlv_count of them,
-        * so we treat them as if that many can be allocated at once.
+       /* Command payloads are allocated one at a time, but a single
+        * transaction can require up to the maximum supported by the
+        * channel; treat them as if they were allocated all at once.
         */
        return gsi_trans_pool_init_dma(dev, &trans_info->cmd_pool,
                                       sizeof(union ipa_cmd_payload),
-                                      tre_max, channel->tlv_count);
+                                      tre_max, channel->trans_tre_max);
 }
 
 void ipa_cmd_pool_exit(struct gsi_channel *channel)
 
        if (endpoint->ee_id != GSI_EE_AP)
                return;
 
-       endpoint->trans_tre_max = gsi_channel_trans_tre_max(gsi, channel_id);
+       endpoint->trans_tre_max = gsi->channel[channel_id].trans_tre_max;
        if (!endpoint->toward_ipa) {
                /* RX transactions require a single TRE, so the maximum
                 * backlog is the same as the maximum outstanding TREs.