lkml.org 
[lkml]   [2013]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 011/173] staging: vt6656: [BUG] Fix for TX USB resets from vendors driver.
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Malcolm Priestley <tvboxspy@gmail.com>

    commit 9df682927c2e3a92f43803d6b52095992e3b2ab8 upstream.

    This fixes resets on heavy TX data traffic.

    Vendor driver
    VT6656_Linux_src_v1.21.03_x86_11.04.zip
    http://www.viaembedded.com/servlet/downloadSvl?id=1890&download_file_id=14704
    This is GPL-licensed code.

    original code
    BBbVT3184Init
    ...
    //2007-0725, RobertChang add, Enable Squelch detect reset option(SQ_RST_Opt), USB (register4, bit1)
    CONTROLnsRequestIn(pDevice,
    MESSAGE_TYPE_READ,
    (WORD)0x600+4, // USB's Reg4's bit1
    MESSAGE_REQUEST_MEM,
    1,
    (PBYTE) &byData);
    byData = byData|2 ;
    CONTROLnsRequestOut(pDevice,
    MESSAGE_TYPE_WRITE,
    (WORD)0x600+4, // USB's Reg4's bit1
    MESSAGE_REQUEST_MEM,
    1,
    (PBYTE) &byData);

    return TRUE;//ntStatus;
    ....

    A back port patch is needed for kernels less than 3.10.

    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/staging/vt6656/baseband.c | 11 +++++++++++
    drivers/staging/vt6656/rndis.h | 2 ++
    2 files changed, 13 insertions(+)

    --- a/drivers/staging/vt6656/baseband.c
    +++ b/drivers/staging/vt6656/baseband.c
    @@ -941,6 +941,7 @@ int BBbVT3184Init(struct vnt_private *pD
    u8 * pbyAgc;
    u16 wLengthAgc;
    u8 abyArray[256];
    + u8 data;

    ntStatus = CONTROLnsRequestIn(pDevice,
    MESSAGE_TYPE_READ,
    @@ -1106,6 +1107,16 @@ else {
    ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x0D,0x01);

    RFbRFTableDownload(pDevice);
    +
    + /* Fix for TX USB resets from vendors driver */
    + CONTROLnsRequestIn(pDevice, MESSAGE_TYPE_READ, USB_REG4,
    + MESSAGE_REQUEST_MEM, sizeof(data), &data);
    +
    + data |= 0x2;
    +
    + CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_WRITE, USB_REG4,
    + MESSAGE_REQUEST_MEM, sizeof(data), &data);
    +
    return true;//ntStatus;
    }

    --- a/drivers/staging/vt6656/rndis.h
    +++ b/drivers/staging/vt6656/rndis.h
    @@ -66,6 +66,8 @@

    #define VIAUSB20_PACKET_HEADER 0x04

    +#define USB_REG4 0x604
    +
    typedef struct _CMD_MESSAGE
    {
    u8 byData[256];



    \
     
     \ /
      Last update: 2013-12-02 23:21    [W:4.035 / U:0.280 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site