Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 446396bf authored by David Vrabel's avatar David Vrabel
Browse files

uwb: Remove the WLP subsystem and drivers



The only Wimedia LLC Protocol (WLP) hardware was an Intel i1480 chip
with a beta release of firmware that was never commercially available as
a product.  This hardware and firmware is no longer available as Intel
sold their UWB/WLP IP.  I also see little prospect of other WLP
capable hardware ever being available.

Signed-off-by: default avatarDavid Vrabel <david.vrabel@csr.com>
parent 229aebb8
Loading
Loading
Loading
Loading
+0 −12
Original line number Original line Diff line number Diff line
@@ -5995,9 +5995,6 @@ M: David Vrabel <david.vrabel@csr.com>
L:	linux-usb@vger.kernel.org
L:	linux-usb@vger.kernel.org
S:	Supported
S:	Supported
F:	drivers/uwb/
F:	drivers/uwb/
X:	drivers/uwb/wlp/
X:	drivers/uwb/i1480/i1480u-wlp/
X:	drivers/uwb/i1480/i1480-wlp.h
F:	include/linux/uwb.h
F:	include/linux/uwb.h
F:	include/linux/uwb/
F:	include/linux/uwb/


@@ -6533,15 +6530,6 @@ F: include/linux/wimax/debug.h
F:	include/net/wimax.h
F:	include/net/wimax.h
F:	net/wimax/
F:	net/wimax/


WIMEDIA LLC PROTOCOL (WLP) SUBSYSTEM
M:	David Vrabel <david.vrabel@csr.com>
L:	netdev@vger.kernel.org
S:	Maintained
F:	include/linux/wlp.h
F:	drivers/uwb/wlp/
F:	drivers/uwb/i1480/i1480u-wlp/
F:	drivers/uwb/i1480/i1480-wlp.h

WISTRON LAPTOP BUTTON DRIVER
WISTRON LAPTOP BUTTON DRIVER
M:	Miloslav Trmac <mitr@volny.cz>
M:	Miloslav Trmac <mitr@volny.cz>
S:	Maintained
S:	Maintained
+1 −19
Original line number Original line Diff line number Diff line
@@ -12,8 +12,7 @@ menuconfig UWB
	  technology using a wide spectrum (3.1-10.6GHz). It is
	  technology using a wide spectrum (3.1-10.6GHz). It is
	  optimized for in-room use (480Mbps at 2 meters, 110Mbps at
	  optimized for in-room use (480Mbps at 2 meters, 110Mbps at
	  10m). It serves as the transport layer for other protocols,
	  10m). It serves as the transport layer for other protocols,
	  such as Wireless USB (WUSB), IP (WLP) and upcoming
	  such as Wireless USB (WUSB).
	  Bluetooth and 1394


	  The topology is peer to peer; however, higher level
	  The topology is peer to peer; however, higher level
	  protocols (such as WUSB) might impose a master/slave
	  protocols (such as WUSB) might impose a master/slave
@@ -58,13 +57,6 @@ config UWB_WHCI
          To compile this driver select Y (built in) or M (module). It
          To compile this driver select Y (built in) or M (module). It
          is safe to select any even if you do not have the hardware.
          is safe to select any even if you do not have the hardware.


config UWB_WLP
	tristate "Support WiMedia Link Protocol (Ethernet/IP over UWB)"
	depends on UWB && NET
	help
	  This is a common library for drivers that implement
	  networking over UWB.

config UWB_I1480U
config UWB_I1480U
        tristate "Support for Intel Wireless UWB Link 1480 HWA"
        tristate "Support for Intel Wireless UWB Link 1480 HWA"
        depends on UWB_HWA
        depends on UWB_HWA
@@ -77,14 +69,4 @@ config UWB_I1480U
         To compile this driver select Y (built in) or M (module). It
         To compile this driver select Y (built in) or M (module). It
         is safe to select any even if you do not have the hardware.
         is safe to select any even if you do not have the hardware.


config UWB_I1480U_WLP
        tristate "Support for Intel Wireless UWB Link 1480 HWA's WLP interface"
        depends on UWB_I1480U &&  UWB_WLP && NET
        help
         This driver enables WLP support for the i1480 when connected via
         USB. WLP is the WiMedia Link Protocol, or IP over UWB.

         To compile this driver select Y (built in) or M (module). It
         is safe to select any even if you don't have the hardware.

endif # UWB
endif # UWB
+0 −1
Original line number Original line Diff line number Diff line
obj-$(CONFIG_UWB)		+= uwb.o
obj-$(CONFIG_UWB)		+= uwb.o
obj-$(CONFIG_UWB_WLP)		+= wlp/
obj-$(CONFIG_UWB_WHCI)		+= umc.o whci.o whc-rc.o
obj-$(CONFIG_UWB_WHCI)		+= umc.o whci.o whc-rc.o
obj-$(CONFIG_UWB_HWA)		+= hwa-rc.o
obj-$(CONFIG_UWB_HWA)		+= hwa-rc.o
obj-$(CONFIG_UWB_I1480U)	+= i1480/
obj-$(CONFIG_UWB_I1480U)	+= i1480/
+0 −1
Original line number Original line Diff line number Diff line
obj-$(CONFIG_UWB_I1480U)	+= dfu/ i1480-est.o
obj-$(CONFIG_UWB_I1480U)	+= dfu/ i1480-est.o
obj-$(CONFIG_UWB_I1480U_WLP)	+= i1480u-wlp/

drivers/uwb/i1480/i1480-wlp.h

deleted100644 → 0
+0 −200
Original line number Original line Diff line number Diff line
/*
 * Intel 1480 Wireless UWB Link
 * WLP specific definitions
 *
 *
 * Copyright (C) 2005-2006 Intel Corporation
 * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version
 * 2 as published by the Free Software Foundation.
 *
 * 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.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301, USA.
 *
 *
 * FIXME: docs
 */

#ifndef __i1480_wlp_h__
#define __i1480_wlp_h__

#include <linux/spinlock.h>
#include <linux/list.h>
#include <linux/uwb.h>
#include <linux/if_ether.h>
#include <asm/byteorder.h>

/* New simplified header format? */
#undef WLP_HDR_FMT_2 		/* FIXME: rename */

/**
 * Values of the Delivery ID & Type field when PCA or DRP
 *
 * The Delivery ID & Type field in the WLP TX header indicates whether
 * the frame is PCA or DRP. This is done based on the high level bit of
 * this field.
 * We use this constant to test if the traffic is PCA or DRP as follows:
 * if (wlp_tx_hdr_delivery_id_type(wlp_tx_hdr) & WLP_DRP)
 * 	this is DRP traffic
 * else
 * 	this is PCA traffic
 */
enum deliver_id_type_bit {
	WLP_DRP = 8,
};

/**
 * WLP TX header
 *
 * Indicates UWB/WLP-specific transmission parameters for a network
 * packet.
 */
struct wlp_tx_hdr {
	/* dword 0 */
	struct uwb_dev_addr dstaddr;
	u8                  key_index;
	u8                  mac_params;
	/* dword 1 */
	u8                  phy_params;
#ifndef WLP_HDR_FMT_2
	u8                  reserved;
	__le16              oui01;              /* FIXME: not so sure if __le16 or u8[2] */
	/* dword 2 */
	u8                  oui2;               /*        if all LE, it could be merged */
	__le16              prid;
#endif
} __attribute__((packed));

static inline int wlp_tx_hdr_delivery_id_type(const struct wlp_tx_hdr *hdr)
{
	return hdr->mac_params & 0x0f;
}

static inline int wlp_tx_hdr_ack_policy(const struct wlp_tx_hdr *hdr)
{
	return (hdr->mac_params >> 4) & 0x07;
}

static inline int wlp_tx_hdr_rts_cts(const struct wlp_tx_hdr *hdr)
{
	return (hdr->mac_params >> 7) & 0x01;
}

static inline void wlp_tx_hdr_set_delivery_id_type(struct wlp_tx_hdr *hdr, int id)
{
	hdr->mac_params = (hdr->mac_params & ~0x0f) | id;
}

static inline void wlp_tx_hdr_set_ack_policy(struct wlp_tx_hdr *hdr,
					     enum uwb_ack_pol policy)
{
	hdr->mac_params = (hdr->mac_params & ~0x70) | (policy << 4);
}

static inline void wlp_tx_hdr_set_rts_cts(struct wlp_tx_hdr *hdr, int rts_cts)
{
	hdr->mac_params = (hdr->mac_params & ~0x80) | (rts_cts << 7);
}

static inline enum uwb_phy_rate wlp_tx_hdr_phy_rate(const struct wlp_tx_hdr *hdr)
{
	return hdr->phy_params & 0x0f;
}

static inline int wlp_tx_hdr_tx_power(const struct wlp_tx_hdr *hdr)
{
	return (hdr->phy_params >> 4) & 0x0f;
}

static inline void wlp_tx_hdr_set_phy_rate(struct wlp_tx_hdr *hdr, enum uwb_phy_rate rate)
{
	hdr->phy_params = (hdr->phy_params & ~0x0f) | rate;
}

static inline void wlp_tx_hdr_set_tx_power(struct wlp_tx_hdr *hdr, int pwr)
{
	hdr->phy_params = (hdr->phy_params & ~0xf0) | (pwr << 4);
}


/**
 * WLP RX header
 *
 * Provides UWB/WLP-specific transmission data for a received
 * network packet.
 */
struct wlp_rx_hdr {
	/* dword 0 */
	struct uwb_dev_addr dstaddr;
	struct uwb_dev_addr srcaddr;
	/* dword 1 */
	u8 		    LQI;
	s8		    RSSI;
	u8		    reserved3;
#ifndef WLP_HDR_FMT_2
	u8 		    oui0;
	/* dword 2 */
	__le16		    oui12;
	__le16		    prid;
#endif
} __attribute__((packed));


/** User configurable options for WLP */
struct wlp_options {
	struct mutex mutex; /* access to user configurable options*/
	struct wlp_tx_hdr def_tx_hdr;	/* default tx hdr */
	u8 pca_base_priority;
	u8 bw_alloc; /*index into bw_allocs[] for PCA/DRP reservations*/
};


static inline
void wlp_options_init(struct wlp_options *options)
{
	mutex_init(&options->mutex);
	wlp_tx_hdr_set_ack_policy(&options->def_tx_hdr, UWB_ACK_INM);
	wlp_tx_hdr_set_rts_cts(&options->def_tx_hdr, 1);
	/* FIXME: default to phy caps */
	wlp_tx_hdr_set_phy_rate(&options->def_tx_hdr, UWB_PHY_RATE_480);
#ifndef WLP_HDR_FMT_2
	options->def_tx_hdr.prid = cpu_to_le16(0x0000);
#endif
}


/* sysfs helpers */

extern ssize_t uwb_pca_base_priority_store(struct wlp_options *,
					   const char *, size_t);
extern ssize_t uwb_pca_base_priority_show(const struct wlp_options *, char *);
extern ssize_t uwb_bw_alloc_store(struct wlp_options *, const char *, size_t);
extern ssize_t uwb_bw_alloc_show(const struct wlp_options *, char *);
extern ssize_t uwb_ack_policy_store(struct wlp_options *,
				    const char *, size_t);
extern ssize_t uwb_ack_policy_show(const struct wlp_options *, char *);
extern ssize_t uwb_rts_cts_store(struct wlp_options *, const char *, size_t);
extern ssize_t uwb_rts_cts_show(const struct wlp_options *, char *);
extern ssize_t uwb_phy_rate_store(struct wlp_options *, const char *, size_t);
extern ssize_t uwb_phy_rate_show(const struct wlp_options *, char *);


/** Simple bandwidth allocation (temporary and too simple) */
struct wlp_bw_allocs {
	const char *name;
	struct {
		u8 mask, stream;
	} tx, rx;
};


#endif /* #ifndef __i1480_wlp_h__ */
Loading