[PATCH] libertas: indirect all hardware access via hw_XXXX functions
Dan Williams
dcbw at redhat.com
Sat Mar 17 00:56:15 EDT 2007
On Sat, 2007-02-24 at 16:58 +0100, Holger Schurig wrote:
> This functions makes all libertas_sbi_XXX functions static to the
> if_usb.c file and renames them to if_usb_XXXX(). The get called from
> other places of the source code via priv->hw_XXXX().
Applied.
> Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
> ---
> drivers/net/wireless/libertas/cmd.c | 5 +--
> drivers/net/wireless/libertas/cmdresp.c | 1 -
> drivers/net/wireless/libertas/decl.h | 5 ++++
> drivers/net/wireless/libertas/defs.h | 7 ++++++
> drivers/net/wireless/libertas/dev.h | 8 +++++++
> drivers/net/wireless/libertas/ethtool.c | 2 -
> drivers/net/wireless/libertas/fw.c | 3 +-
> drivers/net/wireless/libertas/if_usb.c | 32 +++++++++++++++++++++---------
> drivers/net/wireless/libertas/main.c | 15 ++++++-------
> drivers/net/wireless/libertas/sbi.h | 30 -----------------------------
> drivers/net/wireless/libertas/tx.c | 11 ++++-----
> 11 files changed, 57 insertions(+), 62 deletions(-)
>
> diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c
> index 935cce2..ac9a982 100644
> --- a/drivers/net/wireless/libertas/cmd.c
> +++ b/drivers/net/wireless/libertas/cmd.c
> @@ -6,7 +6,6 @@
> #include <net/iw_handler.h>
> #include "host.h"
> #include "hostcmd.h"
> -#include "sbi.h"
> #include "decl.h"
> #include "defs.h"
> #include "dev.h"
> @@ -1013,7 +1012,7 @@ static int DownloadcommandToStation(wlan_private * priv,
> cmdnode->cmdwaitqwoken = 0;
> cmdsize = cpu_to_le16(cmdsize);
>
> - ret = libertas_sbi_host_to_card(priv, MVMS_CMD, (u8 *) cmdptr, cmdsize);
> + ret = priv->hw_host_to_card(priv, MVMS_CMD, (u8 *) cmdptr, cmdsize);
>
> if (ret != 0) {
> lbs_deb_cmd("DNLD_CMD: Host to Card failed\n");
> @@ -1840,7 +1839,7 @@ static int sendconfirmsleep(wlan_private * priv, u8 * cmdptr, u16 size)
>
> lbs_dbg_hex("SEND_SLEEPC_CMD: Sleep confirm command", cmdptr, size);
>
> - ret = libertas_sbi_host_to_card(priv, MVMS_CMD, cmdptr, size);
> + ret = priv->hw_host_to_card(priv, MVMS_CMD, cmdptr, size);
> priv->wlan_dev.dnld_sent = DNLD_RES_RECEIVED;
>
> spin_lock_irqsave(&adapter->driver_lock, flags);
> diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c
> index 027b91c..1b3d54d 100644
> --- a/drivers/net/wireless/libertas/cmdresp.c
> +++ b/drivers/net/wireless/libertas/cmdresp.c
> @@ -9,7 +9,6 @@
> #include <net/iw_handler.h>
>
> #include "host.h"
> -#include "sbi.h"
> #include "decl.h"
> #include "defs.h"
> #include "dev.h"
> diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h
> index d7bb7b0..0df1f29 100644
> --- a/drivers/net/wireless/libertas/decl.h
> +++ b/drivers/net/wireless/libertas/decl.h
> @@ -82,4 +82,9 @@ int libertas_remove_card(wlan_private *priv);
> int libertas_add_mesh(wlan_private *priv);
> void libertas_remove_mesh(wlan_private *priv);
>
> +/* preliminary here */
> +int if_usb_register(void);
> +void if_usb_unregister(void);
> +
> +
> #endif /* _WLAN_DECL_H_ */
> diff --git a/drivers/net/wireless/libertas/defs.h b/drivers/net/wireless/libertas/defs.h
> index 67de2a6..c310061 100644
> --- a/drivers/net/wireless/libertas/defs.h
> +++ b/drivers/net/wireless/libertas/defs.h
> @@ -152,6 +152,13 @@ static inline void lbs_dbg_hex(char *prompt, u8 * buf, int len)
> #define MRVDRV_MAX_BEACON_INTERVAL 1000
> #define MRVDRV_BEACON_INTERVAL 100
>
> +/** INT status Bit Definition*/
> +#define his_cmddnldrdy 0x01
> +#define his_cardevent 0x02
> +#define his_cmdupldrdy 0x04
> +
> +#define SBI_EVENT_CAUSE_SHIFT 3
> +
> /** TxPD status */
>
> /* Station firmware use TxPD status field to report final Tx transmit
> diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h
> index 34fa0f8..2961a8b 100644
> --- a/drivers/net/wireless/libertas/dev.h
> +++ b/drivers/net/wireless/libertas/dev.h
> @@ -162,6 +162,14 @@ struct _wlan_private {
>
> struct delayed_work assoc_work;
> struct workqueue_struct *assoc_thread;
> +
> + /** Hardware access */
> + int (*hw_register_dev) (wlan_private * priv);
> + int (*hw_unregister_dev) (wlan_private *);
> + int (*hw_prog_firmware) (wlan_private *);
> + int (*hw_host_to_card) (wlan_private * priv, u8 type, u8 * payload, u16 nb);
> + int (*hw_get_int_status) (wlan_private * priv, u8 *);
> + int (*hw_read_event_cause) (wlan_private *);
> };
>
> /** Association request
> diff --git a/drivers/net/wireless/libertas/ethtool.c b/drivers/net/wireless/libertas/ethtool.c
> index 81a09ed..2b716eb 100644
> --- a/drivers/net/wireless/libertas/ethtool.c
> +++ b/drivers/net/wireless/libertas/ethtool.c
> @@ -1,10 +1,8 @@
> -
> #include <linux/netdevice.h>
> #include <linux/ethtool.h>
> #include <linux/delay.h>
>
> #include "host.h"
> -#include "sbi.h"
> #include "decl.h"
> #include "defs.h"
> #include "dev.h"
> diff --git a/drivers/net/wireless/libertas/fw.c b/drivers/net/wireless/libertas/fw.c
> index 0ea0cfc..19a2888 100644
> --- a/drivers/net/wireless/libertas/fw.c
> +++ b/drivers/net/wireless/libertas/fw.c
> @@ -5,7 +5,6 @@
> #include <linux/firmware.h>
>
> #include "host.h"
> -#include "sbi.h"
> #include "defs.h"
> #include "decl.h"
> #include "dev.h"
> @@ -89,7 +88,7 @@ static int wlan_setup_station_hw(wlan_private * priv)
> goto done;
> }
>
> - ret = libertas_sbi_prog_firmware(priv);
> + ret = priv->hw_prog_firmware(priv);
>
> release_firmware(priv->firmware);
>
> diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
> index c48e09f..7c23689 100644
> --- a/drivers/net/wireless/libertas/if_usb.c
> +++ b/drivers/net/wireless/libertas/if_usb.c
> @@ -7,7 +7,6 @@
> #include <linux/usb.h>
>
> #include "host.h"
> -#include "sbi.h"
> #include "decl.h"
> #include "defs.h"
> #include "dev.h"
> @@ -33,6 +32,12 @@ MODULE_DEVICE_TABLE(usb, if_usb_table);
> static void if_usb_receive(struct urb *urb);
> static void if_usb_receive_fwload(struct urb *urb);
> static int reset_device(wlan_private *priv);
> +static int if_usb_register_dev(wlan_private * priv);
> +static int if_usb_unregister_dev(wlan_private *);
> +static int if_usb_prog_firmware(wlan_private *);
> +static int if_usb_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 nb);
> +static int if_usb_get_int_status(wlan_private * priv, u8 *);
> +static int if_usb_read_event_cause(wlan_private *);
>
> /**
> * @brief call back function to handle the status of the URB
> @@ -190,11 +195,18 @@ static int if_usb_probe(struct usb_interface *intf,
>
> /* At this point libertas_add_card() will be called. Don't worry
> * about keeping priv around since it will be set on our
> - * usb device data in -> add() -> libertas_sbi_register_dev().
> + * usb device data in -> add() -> hw_register_dev() -> if_usb_register_dev.
> */
> if (!(priv = libertas_add_card(usb_cardp)))
> goto dealloc;
>
> + priv->hw_register_dev = if_usb_register_dev;
> + priv->hw_unregister_dev = if_usb_unregister_dev;
> + priv->hw_prog_firmware = if_usb_prog_firmware;
> + priv->hw_host_to_card = if_usb_host_to_card;
> + priv->hw_get_int_status = if_usb_get_int_status;
> + priv->hw_read_event_cause = if_usb_read_event_cause;
> +
> if (libertas_activate_card(priv))
> goto dealloc;
>
> @@ -694,7 +706,7 @@ rx_exit:
> * @param len number of bytes
> * @return 0 or -1
> */
> -int libertas_sbi_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 nb)
> +static int if_usb_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 nb)
> {
> int ret = -1;
> u32 tmp;
> @@ -725,7 +737,7 @@ int libertas_sbi_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 nb
> }
>
> /* called with adapter->driver_lock held */
> -int libertas_sbi_get_int_status(wlan_private * priv, u8 * ireg)
> +static int if_usb_get_int_status(wlan_private * priv, u8 * ireg)
> {
> struct usb_card_rec *cardp = priv->wlan_dev.card;
>
> @@ -737,7 +749,7 @@ int libertas_sbi_get_int_status(wlan_private * priv, u8 * ireg)
> return 0;
> }
>
> -int libertas_sbi_read_event_cause(wlan_private * priv)
> +static int if_usb_read_event_cause(wlan_private * priv)
> {
> struct usb_card_rec *cardp = priv->wlan_dev.card;
> priv->adapter->eventcause = cardp->usb_event_cause;
> @@ -760,7 +772,7 @@ static int reset_device(wlan_private *priv)
> return ret;
> }
>
> -int libertas_sbi_unregister_dev(wlan_private * priv)
> +static int if_usb_unregister_dev(wlan_private * priv)
> {
> int ret = 0;
>
> @@ -780,7 +792,7 @@ int libertas_sbi_unregister_dev(wlan_private * priv)
> * @param priv pointer to wlan_private
> * @return 0 or -1
> */
> -int libertas_sbi_register_dev(wlan_private * priv)
> +static int if_usb_register_dev(wlan_private * priv)
> {
> struct usb_card_rec *cardp = (struct usb_card_rec *)priv->wlan_dev.card;
>
> @@ -801,7 +813,7 @@ int libertas_sbi_register_dev(wlan_private * priv)
>
>
>
> -int libertas_sbi_prog_firmware(wlan_private * priv)
> +static int if_usb_prog_firmware(wlan_private * priv)
> {
> struct usb_card_rec *cardp = priv->wlan_dev.card;
> int i = 0;
> @@ -948,7 +960,7 @@ static struct usb_driver if_usb_driver = {
> * @param arg pointer to call back function parameter
> * @return dummy success variable
> */
> -int libertas_sbi_register(void)
> +int if_usb_register(void)
> {
> /*
> * API registers the Marvell USB driver
> @@ -964,7 +976,7 @@ int libertas_sbi_register(void)
> * @brief This function removes usb driver.
> * @return N/A
> */
> -void libertas_sbi_unregister(void)
> +void if_usb_unregister(void)
> {
> int i;
>
> diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
> index 25efdda..e47a4c5 100644
> --- a/drivers/net/wireless/libertas/main.c
> +++ b/drivers/net/wireless/libertas/main.c
> @@ -15,7 +15,6 @@
> #include <net/ieee80211.h>
>
> #include "host.h"
> -#include "sbi.h"
> #include "decl.h"
> #include "dev.h"
> #include "fw.h"
> @@ -647,7 +646,7 @@ static int wlan_service_main_thread(void *data)
> if (adapter->intcounter) {
> u8 int_status;
> adapter->intcounter = 0;
> - int_status = libertas_sbi_get_int_status(priv, &ireg);
> + int_status = priv->hw_get_int_status(priv, &ireg);
>
> if (int_status) {
> lbs_deb_thread(
> @@ -679,9 +678,9 @@ static int wlan_service_main_thread(void *data)
>
> adapter->hisregcpy &= ~his_cardevent;
>
> - if (libertas_sbi_read_event_cause(priv)) {
> + if (priv->hw_read_event_cause(priv)) {
> lbs_pr_alert(
> - "main-thread: libertas_sbi_read_event_cause failed\n");
> + "main-thread: hw_read_event_cause failed\n");
> spin_unlock_irq(&adapter->driver_lock);
> continue;
> }
> @@ -849,7 +848,7 @@ int libertas_activate_card(wlan_private *priv)
> * relevant information from the card and request for the required
> * IRQ.
> */
> - if (libertas_sbi_register_dev(priv) < 0) {
> + if (priv->hw_register_dev(priv) < 0) {
> lbs_pr_err("failed to register WLAN device\n");
> goto err_registerdev;
> }
> @@ -873,7 +872,7 @@ int libertas_activate_card(wlan_private *priv)
> goto done;
>
> err_init_fw:
> - libertas_sbi_unregister_dev(priv);
> + priv->hw_unregister_dev(priv);
> err_registerdev:
> destroy_workqueue(priv->assoc_thread);
> /* Stop the thread servicing the interrupts */
> @@ -1150,7 +1149,7 @@ static int wlan_init_module(void)
>
> libertas_debugfs_init();
>
> - if (libertas_sbi_register()) {
> + if (if_usb_register()) {
> ret = -1;
> libertas_debugfs_remove();
> }
> @@ -1163,7 +1162,7 @@ static void wlan_cleanup_module(void)
> {
> lbs_deb_enter(LBS_DEB_MAIN);
>
> - libertas_sbi_unregister();
> + if_usb_unregister();
> libertas_debugfs_remove();
>
> lbs_deb_leave(LBS_DEB_MAIN);
> diff --git a/drivers/net/wireless/libertas/sbi.h b/drivers/net/wireless/libertas/sbi.h
> deleted file mode 100644
> index e4840fd..0000000
> --- a/drivers/net/wireless/libertas/sbi.h
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -/**
> - * This file contains IF layer definitions.
> - */
> -
> -#ifndef _SBI_H_
> -#define _SBI_H_
> -
> -#include <linux/interrupt.h>
> -
> -#include "defs.h"
> -
> -/** INT status Bit Definition*/
> -#define his_cmddnldrdy 0x01
> -#define his_cardevent 0x02
> -#define his_cmdupldrdy 0x04
> -
> -#define SBI_EVENT_CAUSE_SHIFT 3
> -
> -/* Probe and Check if the card is present*/
> -int libertas_sbi_register_dev(wlan_private * priv);
> -int libertas_sbi_unregister_dev(wlan_private *);
> -int libertas_sbi_get_int_status(wlan_private * priv, u8 *);
> -int libertas_sbi_register(void);
> -void libertas_sbi_unregister(void);
> -int libertas_sbi_prog_firmware(wlan_private *);
> -
> -int libertas_sbi_read_event_cause(wlan_private *);
> -int libertas_sbi_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 nb);
> -
> -#endif /* _SBI_H */
> diff --git a/drivers/net/wireless/libertas/tx.c b/drivers/net/wireless/libertas/tx.c
> index d8eb45e..106fb76 100644
> --- a/drivers/net/wireless/libertas/tx.c
> +++ b/drivers/net/wireless/libertas/tx.c
> @@ -5,7 +5,6 @@
>
> #include "hostcmd.h"
> #include "radiotap.h"
> -#include "sbi.h"
> #include "decl.h"
> #include "defs.h"
> #include "dev.h"
> @@ -132,13 +131,13 @@ static int SendSinglePacket(wlan_private * priv, struct sk_buff *skb)
>
> lbs_dbg_hex("Tx Data", (u8 *) p802x_hdr, plocaltxpd->tx_packet_length);
> memcpy(ptr, p802x_hdr, plocaltxpd->tx_packet_length);
> - ret = libertas_sbi_host_to_card(priv, MVMS_DAT,
> - priv->adapter->tmptxbuf,
> - plocaltxpd->tx_packet_length +
> - sizeof(struct txpd));
> + ret = priv->hw_host_to_card(priv, MVMS_DAT,
> + priv->adapter->tmptxbuf,
> + plocaltxpd->tx_packet_length +
> + sizeof(struct txpd));
>
> if (ret) {
> - lbs_deb_tx("tx err: libertas_sbi_host_to_card returned 0x%X\n", ret);
> + lbs_deb_tx("tx err: hw_host_to_card returned 0x%X\n", ret);
> goto done;
> }
>
More information about the libertas-dev
mailing list