cregit-Linux how code gets into the kernel

Release 4.7 drivers/staging/vt6656/firmware.c

/*
 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 *
 * File: baseband.c
 *
 * Purpose: Implement functions to access baseband
 *
 * Author: Yiching Chen
 *
 * Date: May 20, 2004
 *
 * Functions:
 *
 * Revision History:
 *
 */

#include <linux/compiler.h>
#include "firmware.h"
#include "usbpipe.h"


#define FIRMWARE_VERSION	0x133		
/* version 1.51 */

#define FIRMWARE_NAME		"vntwusb.fw"


#define FIRMWARE_CHUNK_SIZE	0x400


int vnt_download_firmware(struct vnt_private *priv) { struct device *dev = &priv->usb->dev; const struct firmware *fw; int status; void *buffer = NULL; bool result = false; u16 length; int ii, rc; dev_dbg(dev, "---->Download firmware\n"); rc = request_firmware(&fw, FIRMWARE_NAME, dev); if (rc) { dev_err(dev, "firmware file %s request failed (%d)\n", FIRMWARE_NAME, rc); goto out; } buffer = kmalloc(FIRMWARE_CHUNK_SIZE, GFP_KERNEL); if (!buffer) goto free_fw; for (ii = 0; ii < fw->size; ii += FIRMWARE_CHUNK_SIZE) { length = min_t(int, fw->size - ii, FIRMWARE_CHUNK_SIZE); memcpy(buffer, fw->data + ii, length); status = vnt_control_out(priv, 0, 0x1200+ii, 0x0000, length, buffer); dev_dbg(dev, "Download firmware...%d %zu\n", ii, fw->size); if (status != STATUS_SUCCESS) goto free_fw; } result = true; free_fw: release_firmware(fw); out: kfree(buffer); return result; }

Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond8137.85%17.14%
ben hutchingsben hutchings7936.92%17.14%
malcolm priestleymalcolm priestley4822.43%642.86%
andres moreandres more41.87%428.57%
randy dunlaprandy dunlap10.47%17.14%
christian engelmayerchristian engelmayer10.47%17.14%
Total214100.00%14100.00%

MODULE_FIRMWARE(FIRMWARE_NAME);
int vnt_firmware_branch_to_sram(struct vnt_private *priv) { int status; dev_dbg(&priv->usb->dev, "---->Branch to Sram\n"); status = vnt_control_out(priv, 1, 0x1200, 0x0000, 0, NULL); return status == STATUS_SUCCESS; }

Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond2655.32%112.50%
malcolm priestleymalcolm priestley1838.30%562.50%
tapasweni pathaktapasweni pathak24.26%112.50%
andres moreandres more12.13%112.50%
Total47100.00%8100.00%


int vnt_check_firmware_version(struct vnt_private *priv) { int status; status = vnt_control_in(priv, MESSAGE_TYPE_READ, 0, MESSAGE_REQUEST_VERSION, 2, (u8 *)&priv->firmware_version); dev_dbg(&priv->usb->dev, "Firmware Version [%04x]\n", priv->firmware_version); if (status != STATUS_SUCCESS) { dev_dbg(&priv->usb->dev, "Firmware Invalid.\n"); return false; } if (priv->firmware_version == 0xFFFF) { dev_dbg(&priv->usb->dev, "In Loader.\n"); return false; } dev_dbg(&priv->usb->dev, "Firmware Version [%04x]\n", priv->firmware_version); if (priv->firmware_version < FIRMWARE_VERSION) { /* branch to loader for download new firmware */ vnt_firmware_branch_to_sram(priv); return false; } return true; }

Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond7956.83%17.14%
malcolm priestleymalcolm priestley5136.69%750.00%
andres moreandres more75.04%428.57%
ben hutchingsben hutchings10.72%17.14%
nandini hanumanthagowdanandini hanumanthagowda10.72%17.14%
Total139100.00%14100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond19445.33%13.70%
malcolm priestleymalcolm priestley11827.57%1348.15%
ben hutchingsben hutchings9522.20%13.70%
andres moreandres more122.80%622.22%
cedric cabessacedric cabessa30.70%13.70%
tapasweni pathaktapasweni pathak20.47%13.70%
nandini hanumanthagowdanandini hanumanthagowda10.23%13.70%
othmar pastekaothmar pasteka10.23%13.70%
randy dunlaprandy dunlap10.23%13.70%
christian engelmayerchristian engelmayer10.23%13.70%
Total428100.00%27100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}