OSDN Git Service

staging: most: hdm-dim2: fix channel configuration
authorAndrey Shvetsov <andrey.shvetsov@k2l.de>
Thu, 15 Sep 2016 14:19:03 +0000 (16:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2016 17:23:28 +0000 (19:23 +0200)
The DIM2 HDM checks the parameters passed to the function
configure_channel() and adapts the buffer sizes of the configuration
according to the hardware limitation. This patch is needed to init
the HAL layer with the correct values.

Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/most/hdm-dim2/dim2_hdm.c

index 87039d9..dc71dab 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * dim2_hdm.c - MediaLB DIM2 Hardware Dependent Module
  *
- * Copyright (C) 2015, Microchip Technology Germany II GmbH & Co. KG
+ * Copyright (C) 2015-2016, Microchip Technology Germany II GmbH & Co. KG
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -557,7 +557,7 @@ static int configure_channel(struct most_interface *most_iface, int ch_idx,
                                hdm_ch->name, buf_size, new_size);
                spin_lock_irqsave(&dim_lock, flags);
                hal_ret = dim_init_control(&hdm_ch->ch, is_tx, ch_addr,
-                                          buf_size);
+                                          new_size);
                break;
        case MOST_CH_ASYNC:
                new_size = dim_norm_ctrl_async_buffer_size(buf_size);
@@ -570,7 +570,7 @@ static int configure_channel(struct most_interface *most_iface, int ch_idx,
                        pr_warn("%s: fixed buffer size (%d -> %d)\n",
                                hdm_ch->name, buf_size, new_size);
                spin_lock_irqsave(&dim_lock, flags);
-               hal_ret = dim_init_async(&hdm_ch->ch, is_tx, ch_addr, buf_size);
+               hal_ret = dim_init_async(&hdm_ch->ch, is_tx, ch_addr, new_size);
                break;
        case MOST_CH_ISOC_AVP:
                new_size = dim_norm_isoc_buffer_size(buf_size, sub_size);