From a5969cabbb4660eab42b6ef0412cbbd1200cf14d Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Sat, 12 Oct 2024 07:10:09 +0000 Subject: [PATCH] 修改led为gpio --- kernel/drivers/net/wireless/marvell/libertas_tf/if_usb.c | 87 +++++++++++++++++++++---------------------- 1 files changed, 43 insertions(+), 44 deletions(-) diff --git a/kernel/drivers/net/wireless/marvell/libertas_tf/if_usb.c b/kernel/drivers/net/wireless/marvell/libertas_tf/if_usb.c index 60941c3..2c45ef6 100644 --- a/kernel/drivers/net/wireless/marvell/libertas_tf/if_usb.c +++ b/kernel/drivers/net/wireless/marvell/libertas_tf/if_usb.c @@ -1,11 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (C) 2008, cozybit Inc. * Copyright (C) 2003-2006, Marvell International Ltd. - * - * 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. */ #define DRV_NAME "lbtf_usb" @@ -42,19 +38,19 @@ static void if_usb_receive(struct urb *urb); static void if_usb_receive_fwload(struct urb *urb); -static int if_usb_prog_firmware(struct if_usb_card *cardp); +static int if_usb_prog_firmware(struct lbtf_private *priv); static int if_usb_host_to_card(struct lbtf_private *priv, uint8_t type, uint8_t *payload, uint16_t nb); static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload, uint16_t nb, u8 data); static void if_usb_free(struct if_usb_card *cardp); static int if_usb_submit_rx_urb(struct if_usb_card *cardp); -static int if_usb_reset_device(struct if_usb_card *cardp); +static int if_usb_reset_device(struct lbtf_private *priv); /** * if_usb_wrike_bulk_callback - call back to handle URB status * - * @param urb pointer to urb structure + * @urb: pointer to urb structure */ static void if_usb_write_bulk_callback(struct urb *urb) { @@ -71,7 +67,7 @@ /** * if_usb_free - free tx/rx urb, skb and rx buffer * - * @param cardp pointer if_usb_card + * @cardp: pointer if_usb_card */ static void if_usb_free(struct if_usb_card *cardp) { @@ -131,11 +127,17 @@ lbtf_deb_leave(LBTF_DEB_USB); } +static const struct lbtf_ops if_usb_ops = { + .hw_host_to_card = if_usb_host_to_card, + .hw_prog_firmware = if_usb_prog_firmware, + .hw_reset_device = if_usb_reset_device, +}; + /** * if_usb_probe - sets the configuration values * - * @ifnum interface number - * @id pointer to usb_device_id + * @intf: USB interface structure + * @id: pointer to usb_device_id * * Returns: 0 on success, error code on failure */ @@ -216,16 +218,10 @@ goto dealloc; } - priv = lbtf_add_card(cardp, &udev->dev); + cardp->boot2_version = udev->descriptor.bcdDevice; + priv = lbtf_add_card(cardp, &udev->dev, &if_usb_ops); if (!priv) goto dealloc; - - cardp->priv = priv; - - priv->hw_host_to_card = if_usb_host_to_card; - priv->hw_prog_firmware = if_usb_prog_firmware; - priv->hw_reset_device = if_usb_reset_device; - cardp->boot2_version = udev->descriptor.bcdDevice; usb_get_dev(udev); usb_set_intfdata(intf, cardp); @@ -243,7 +239,7 @@ /** * if_usb_disconnect - free resource and cleanup * - * @intf USB interface structure + * @intf: USB interface structure */ static void if_usb_disconnect(struct usb_interface *intf) { @@ -252,10 +248,10 @@ lbtf_deb_enter(LBTF_DEB_MAIN); - if_usb_reset_device(cardp); - - if (priv) + if (priv) { + if_usb_reset_device(priv); lbtf_remove_card(priv); + } /* Unlink and free urb */ if_usb_free(cardp); @@ -270,7 +266,7 @@ /** * if_usb_send_fw_pkt - This function downloads the FW * - * @priv pointer to struct lbtf_private + * @cardp: pointer if_usb_card * * Returns: 0 */ @@ -321,7 +317,7 @@ } else if (fwdata->hdr.dnldcmd == cpu_to_le32(FW_HAS_LAST_BLOCK)) { lbtf_deb_usb2(&cardp->udev->dev, "Host has finished FW downloading\n"); - lbtf_deb_usb2(&cardp->udev->dev, "Donwloading FW JUMP BLOCK\n"); + lbtf_deb_usb2(&cardp->udev->dev, "Downloading FW JUMP BLOCK\n"); /* Host has finished FW downloading * Donwloading FW JUMP BLOCK @@ -336,8 +332,9 @@ return 0; } -static int if_usb_reset_device(struct if_usb_card *cardp) +static int if_usb_reset_device(struct lbtf_private *priv) { + struct if_usb_card *cardp = priv->card; struct cmd_ds_802_11_reset *cmd = cardp->ep_out_buf + 4; int ret; @@ -365,10 +362,10 @@ /** * usb_tx_block - transfer data to the device * - * @priv pointer to struct lbtf_private - * @payload pointer to payload data - * @nb data length - * @data non-zero for data, zero for commands + * @cardp: pointer if_usb_card + * @payload: pointer to payload data + * @nb: data length + * @data: non-zero for data, zero for commands * * Returns: 0 on success, nonzero otherwise. */ @@ -616,7 +613,7 @@ spin_lock_irqsave(&priv->driver_lock, flags); memcpy(priv->cmd_resp_buff, recvbuff + MESSAGE_HEADER_LEN, recvlength - MESSAGE_HEADER_LEN); - kfree_skb(skb); + dev_kfree_skb_irq(skb); lbtf_cmd_response_rx(priv); spin_unlock_irqrestore(&priv->driver_lock, flags); } @@ -624,7 +621,7 @@ /** * if_usb_receive - read data received from the device. * - * @urb pointer to struct urb + * @urb: pointer to struct urb */ static void if_usb_receive(struct urb *urb) { @@ -707,10 +704,10 @@ /** * if_usb_host_to_card - Download data to the device * - * @priv pointer to struct lbtf_private structure - * @type type of data - * @buf pointer to data buffer - * @len number of bytes + * @priv: pointer to struct lbtf_private structure + * @type: type of data + * @payload: pointer to payload buffer + * @nb: number of bytes * * Returns: 0 on success, nonzero otherwise */ @@ -739,7 +736,8 @@ /** * if_usb_issue_boot_command - Issue boot command to Boot2. * - * @ivalue 1 boots from FW by USB-Download, 2 boots from FW in EEPROM. + * @cardp: pointer if_usb_card + * @ivalue: 1 boots from FW by USB-Download, 2 boots from FW in EEPROM. * * Returns: 0 */ @@ -762,8 +760,8 @@ /** * check_fwfile_format - Check the validity of Boot2/FW image. * - * @data pointer to image - * @totlen image length + * @data: pointer to image + * @totlen: image length * * Returns: 0 if the image is valid, nonzero otherwise. */ @@ -808,13 +806,16 @@ } -static int if_usb_prog_firmware(struct if_usb_card *cardp) +static int if_usb_prog_firmware(struct lbtf_private *priv) { + struct if_usb_card *cardp = priv->card; int i = 0; static int reset_count = 10; int ret = 0; lbtf_deb_enter(LBTF_DEB_USB); + + cardp->priv = priv; kernel_param_lock(THIS_MODULE); ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev); @@ -851,7 +852,7 @@ if (cardp->bootcmdresp <= 0) { if (--reset_count >= 0) { - if_usb_reset_device(cardp); + if_usb_reset_device(priv); goto restart; } return -1; @@ -880,7 +881,7 @@ if (!cardp->fwdnldover) { pr_info("failed to load fw, resetting device!\n"); if (--reset_count >= 0) { - if_usb_reset_device(cardp); + if_usb_reset_device(priv); goto restart; } @@ -888,8 +889,6 @@ ret = -1; goto release_fw; } - - cardp->priv->fw_ready = 1; release_fw: release_firmware(cardp->fw); -- Gitblit v1.6.2