linux/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Linux device driver for RTL8187
 *
 * Copyright 2007 Michael Wu <[email protected]>
 * Copyright 2007 Andrea Merello <[email protected]>
 *
 * Based on the r8187 driver, which is:
 * Copyright 2005 Andrea Merello <[email protected]>, et al.
 *
 * The driver was extended to the RTL8187B in 2008 by:
 *	Herton Ronaldo Krzesinski <[email protected]>
 *	Hin-Tak Leung <[email protected]>
 *	Larry Finger <[email protected]>
 *
 * Magic delays and register offsets below are taken from the original
 * r8187 driver sources.  Thanks to Realtek for their support!
 */

#include <linux/usb.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/etherdevice.h>
#include <linux/eeprom_93cx6.h>
#include <linux/module.h>
#include <net/mac80211.h>

#include "rtl8187.h"
#include "rtl8225.h"
#ifdef CONFIG_RTL8187_LEDS
#include "leds.h"
#endif
#include "rfkill.h"

MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();

static const struct usb_device_id rtl8187_table[] =;

MODULE_DEVICE_TABLE(usb, rtl8187_table);

static const struct ieee80211_rate rtl818x_rates[] =;

static const struct ieee80211_channel rtl818x_channels[] =;

static void rtl8187_iowrite_async_cb(struct urb *urb)
{}

static void rtl8187_iowrite_async(struct rtl8187_priv *priv, __le16 addr,
				  void *data, u16 len)
{}

static inline void rtl818x_iowrite32_async(struct rtl8187_priv *priv,
					   __le32 *addr, u32 val)
{}

void rtl8187_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data)
{}

static void rtl8187_tx_cb(struct urb *urb)
{}

static void rtl8187_tx(struct ieee80211_hw *dev,
		       struct ieee80211_tx_control *control,
		       struct sk_buff *skb)
{}

static void rtl8187_rx_cb(struct urb *urb)
{}

static int rtl8187_init_urbs(struct ieee80211_hw *dev)
{}

static void rtl8187b_status_cb(struct urb *urb)
{}

static int rtl8187b_init_status_urb(struct ieee80211_hw *dev)
{}

static void rtl8187_set_anaparam(struct rtl8187_priv *priv, bool rfon)
{}

static int rtl8187_cmd_reset(struct ieee80211_hw *dev)
{}

static int rtl8187_init_hw(struct ieee80211_hw *dev)
{}

static const u8 rtl8187b_reg_table[][3] =;

static int rtl8187b_init_hw(struct ieee80211_hw *dev)
{}

static void rtl8187_work(struct work_struct *work)
{}

static int rtl8187_start(struct ieee80211_hw *dev)
{}

static void rtl8187_stop(struct ieee80211_hw *dev, bool suspend)
{}

static u64 rtl8187_get_tsf(struct ieee80211_hw *dev, struct ieee80211_vif *vif)
{}


static void rtl8187_beacon_work(struct work_struct *work)
{}


static int rtl8187_add_interface(struct ieee80211_hw *dev,
				 struct ieee80211_vif *vif)
{}

static void rtl8187_remove_interface(struct ieee80211_hw *dev,
				     struct ieee80211_vif *vif)
{}

static int rtl8187_config(struct ieee80211_hw *dev, u32 changed)
{}

/*
 * With 8187B, AC_*_PARAM clashes with FEMR definition in struct rtl818x_csr for
 * example. Thus we have to use raw values for AC_*_PARAM register addresses.
 */
static __le32 *rtl8187b_ac_addr[4] =;

#define SIFS_TIME

static void rtl8187_conf_erp(struct rtl8187_priv *priv, bool use_short_slot,
			     bool use_short_preamble)
{}

static void rtl8187_bss_info_changed(struct ieee80211_hw *dev,
				     struct ieee80211_vif *vif,
				     struct ieee80211_bss_conf *info,
				     u64 changed)
{}

static u64 rtl8187_prepare_multicast(struct ieee80211_hw *dev,
				     struct netdev_hw_addr_list *mc_list)
{}

static void rtl8187_configure_filter(struct ieee80211_hw *dev,
				     unsigned int changed_flags,
				     unsigned int *total_flags,
				     u64 multicast)
{}

static int rtl8187_conf_tx(struct ieee80211_hw *dev,
			   struct ieee80211_vif *vif,
			   unsigned int link_id, u16 queue,
			   const struct ieee80211_tx_queue_params *params)
{}


static const struct ieee80211_ops rtl8187_ops =;

static void rtl8187_eeprom_register_read(struct eeprom_93cx6 *eeprom)
{}

static void rtl8187_eeprom_register_write(struct eeprom_93cx6 *eeprom)
{}

static int rtl8187_probe(struct usb_interface *intf,
				   const struct usb_device_id *id)
{}

static void rtl8187_disconnect(struct usb_interface *intf)
{}

static struct usb_driver rtl8187_driver =;

module_usb_driver();