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

Commit ff446f20 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge 3.5-rc3 into usb-next



This lets us catch the USB fixes that went into 3.5-rc3 into this branch,
as we want them here as well.

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parents 78091dc2 485802a6
Loading
Loading
Loading
Loading
+25 −19
Original line number Original line Diff line number Diff line
@@ -10,8 +10,8 @@ Currently this network device driver is for all STM embedded MAC/GMAC
(i.e. 7xxx/5xxx SoCs), SPEAr (arm), Loongson1B (mips) and XLINX XC2V3000
(i.e. 7xxx/5xxx SoCs), SPEAr (arm), Loongson1B (mips) and XLINX XC2V3000
FF1152AMT0221 D1215994A VIRTEX FPGA board.
FF1152AMT0221 D1215994A VIRTEX FPGA board.


DWC Ether MAC 10/100/1000 Universal version 3.60a (and older) and DWC Ether MAC 10/100
DWC Ether MAC 10/100/1000 Universal version 3.60a (and older) and DWC Ether
Universal version 4.0 have been used for developing this driver.
MAC 10/100 Universal version 4.0 have been used for developing this driver.


This driver supports both the platform bus and PCI.
This driver supports both the platform bus and PCI.


@@ -54,27 +54,27 @@ net_device structure enabling the scatter/gather feature.
When one or more packets are received, an interrupt happens. The interrupts
When one or more packets are received, an interrupt happens. The interrupts
are not queued so the driver has to scan all the descriptors in the ring during
are not queued so the driver has to scan all the descriptors in the ring during
the receive process.
the receive process.
This is based on NAPI so the interrupt handler signals only if there is work to be
This is based on NAPI so the interrupt handler signals only if there is work
done, and it exits.
to be done, and it exits.
Then the poll method will be scheduled at some future point.
Then the poll method will be scheduled at some future point.
The incoming packets are stored, by the DMA, in a list of pre-allocated socket
The incoming packets are stored, by the DMA, in a list of pre-allocated socket
buffers in order to avoid the memcpy (Zero-copy).
buffers in order to avoid the memcpy (Zero-copy).


4.3) Timer-Driver Interrupt
4.3) Timer-Driver Interrupt
Instead of having the device that asynchronously notifies the frame receptions, the
Instead of having the device that asynchronously notifies the frame receptions,
driver configures a timer to generate an interrupt at regular intervals.
the driver configures a timer to generate an interrupt at regular intervals.
Based on the granularity of the timer, the frames that are received by the device
Based on the granularity of the timer, the frames that are received by the
will experience different levels of latency. Some NICs have dedicated timer
device will experience different levels of latency. Some NICs have dedicated
device to perform this task. STMMAC can use either the RTC device or the TMU
timer device to perform this task. STMMAC can use either the RTC device or the
channel 2  on STLinux platforms.
TMU channel 2  on STLinux platforms.
The timers frequency can be passed to the driver as parameter; when change it,
The timers frequency can be passed to the driver as parameter; when change it,
take care of both hardware capability and network stability/performance impact.
take care of both hardware capability and network stability/performance impact.
Several performance tests on STM platforms showed this optimisation allows to spare
Several performance tests on STM platforms showed this optimisation allows to
the CPU while having the maximum throughput.
spare the CPU while having the maximum throughput.


4.4) WOL
4.4) WOL
Wake up on Lan feature through Magic and Unicast frames are supported for the GMAC
Wake up on Lan feature through Magic and Unicast frames are supported for the
core.
GMAC core.


4.5) DMA descriptors
4.5) DMA descriptors
Driver handles both normal and enhanced descriptors. The latter has been only
Driver handles both normal and enhanced descriptors. The latter has been only
@@ -107,6 +107,7 @@ These are included in the include/linux/stmmac.h header file
and detailed below as well:
and detailed below as well:


struct plat_stmmacenet_data {
struct plat_stmmacenet_data {
	char *phy_bus_name;
	int bus_id;
	int bus_id;
	int phy_addr;
	int phy_addr;
	int interface;
	int interface;
@@ -124,19 +125,24 @@ and detailed below as well:
	void (*bus_setup)(void __iomem *ioaddr);
	void (*bus_setup)(void __iomem *ioaddr);
	int (*init)(struct platform_device *pdev);
	int (*init)(struct platform_device *pdev);
	void (*exit)(struct platform_device *pdev);
	void (*exit)(struct platform_device *pdev);
	void *custom_cfg;
	void *custom_data;
	void *bsp_priv;
	void *bsp_priv;
 };
 };


Where:
Where:
 o phy_bus_name: phy bus name to attach to the stmmac.
 o bus_id: bus identifier.
 o bus_id: bus identifier.
 o phy_addr: the physical address can be passed from the platform.
 o phy_addr: the physical address can be passed from the platform.
	    If it is set to -1 the driver will automatically
	    If it is set to -1 the driver will automatically
	    detect it at run-time by probing all the 32 addresses.
	    detect it at run-time by probing all the 32 addresses.
 o interface: PHY device's interface.
 o interface: PHY device's interface.
 o mdio_bus_data: specific platform fields for the MDIO bus.
 o mdio_bus_data: specific platform fields for the MDIO bus.
 o dma_cfg: internal DMA parameters
   o pbl: the Programmable Burst Length is maximum number of beats to
   o pbl: the Programmable Burst Length is maximum number of beats to
       be transferred in one DMA transaction.
       be transferred in one DMA transaction.
       GMAC also enables the 4xPBL by default.
       GMAC also enables the 4xPBL by default.
   o fixed_burst/mixed_burst/burst_len
 o clk_csr: fixed CSR Clock range selection.
 o clk_csr: fixed CSR Clock range selection.
 o has_gmac: uses the GMAC core.
 o has_gmac: uses the GMAC core.
 o enh_desc: if sets the MAC will use the enhanced descriptor structure.
 o enh_desc: if sets the MAC will use the enhanced descriptor structure.
@@ -160,8 +166,9 @@ Where:
	     this is sometime necessary on some platforms (e.g. ST boxes)
	     this is sometime necessary on some platforms (e.g. ST boxes)
	     where the HW needs to have set some PIO lines or system cfg
	     where the HW needs to have set some PIO lines or system cfg
	     registers.
	     registers.
 o custom_cfg: this is a custom configuration that can be passed while
 o custom_cfg/custom_data: this is a custom configuration that can be passed
	      initialising the resources.
			   while initialising the resources.
 o bsp_priv: another private poiter.


For MDIO bus The we have:
For MDIO bus The we have:


@@ -180,7 +187,6 @@ Where:
 o irqs: list of IRQs, one per PHY.
 o irqs: list of IRQs, one per PHY.
 o probed_phy_irq: if irqs is NULL, use this for probed PHY.
 o probed_phy_irq: if irqs is NULL, use this for probed PHY.



For DMA engine we have the following internal fields that should be
For DMA engine we have the following internal fields that should be
tuned according to the HW capabilities.
tuned according to the HW capabilities.


+12 −4
Original line number Original line Diff line number Diff line
@@ -1646,11 +1646,11 @@ S: Maintained
F:	drivers/gpio/gpio-bt8xx.c
F:	drivers/gpio/gpio-bt8xx.c


BTRFS FILE SYSTEM
BTRFS FILE SYSTEM
M:	Chris Mason <chris.mason@oracle.com>
M:	Chris Mason <chris.mason@fusionio.com>
L:	linux-btrfs@vger.kernel.org
L:	linux-btrfs@vger.kernel.org
W:	http://btrfs.wiki.kernel.org/
W:	http://btrfs.wiki.kernel.org/
Q:	http://patchwork.kernel.org/project/linux-btrfs/list/
Q:	http://patchwork.kernel.org/project/linux-btrfs/list/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git
S:	Maintained
S:	Maintained
F:	Documentation/filesystems/btrfs.txt
F:	Documentation/filesystems/btrfs.txt
F:	fs/btrfs/
F:	fs/btrfs/
@@ -1800,6 +1800,9 @@ F: include/linux/cfag12864b.h
CFG80211 and NL80211
CFG80211 and NL80211
M:	Johannes Berg <johannes@sipsolutions.net>
M:	Johannes Berg <johannes@sipsolutions.net>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
W:	http://wireless.kernel.org/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
S:	Maintained
S:	Maintained
F:	include/linux/nl80211.h
F:	include/linux/nl80211.h
F:	include/net/cfg80211.h
F:	include/net/cfg80211.h
@@ -4349,7 +4352,8 @@ MAC80211
M:	Johannes Berg <johannes@sipsolutions.net>
M:	Johannes Berg <johannes@sipsolutions.net>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
W:	http://linuxwireless.org/
W:	http://linuxwireless.org/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
S:	Maintained
S:	Maintained
F:	Documentation/networking/mac80211-injection.txt
F:	Documentation/networking/mac80211-injection.txt
F:	include/net/mac80211.h
F:	include/net/mac80211.h
@@ -4360,7 +4364,8 @@ M: Stefano Brivio <stefano.brivio@polimi.it>
M:	Mattias Nissler <mattias.nissler@gmx.de>
M:	Mattias Nissler <mattias.nissler@gmx.de>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
W:	http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/PID
W:	http://linuxwireless.org/en/developers/Documentation/mac80211/RateControl/PID
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
S:	Maintained
S:	Maintained
F:	net/mac80211/rc80211_pid*
F:	net/mac80211/rc80211_pid*


@@ -5711,6 +5716,9 @@ F: include/linux/remoteproc.h
RFKILL
RFKILL
M:	Johannes Berg <johannes@sipsolutions.net>
M:	Johannes Berg <johannes@sipsolutions.net>
L:	linux-wireless@vger.kernel.org
L:	linux-wireless@vger.kernel.org
W:	http://wireless.kernel.org/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
S:	Maintained
S:	Maintained
F:	Documentation/rfkill.txt
F:	Documentation/rfkill.txt
F:	net/rfkill/
F:	net/rfkill/
+1 −1
Original line number Original line Diff line number Diff line
VERSION = 3
VERSION = 3
PATCHLEVEL = 5
PATCHLEVEL = 5
SUBLEVEL = 0
SUBLEVEL = 0
EXTRAVERSION = -rc2
EXTRAVERSION = -rc3
NAME = Saber-toothed Squirrel
NAME = Saber-toothed Squirrel


# *DOCUMENTATION*
# *DOCUMENTATION*
+8 −8
Original line number Original line Diff line number Diff line
@@ -366,8 +366,8 @@ static int __dmabounce_sync_for_cpu(struct device *dev, dma_addr_t addr,
	struct safe_buffer *buf;
	struct safe_buffer *buf;
	unsigned long off;
	unsigned long off;


	dev_dbg(dev, "%s(dma=%#x,off=%#lx,sz=%zx,dir=%x)\n",
	dev_dbg(dev, "%s(dma=%#x,sz=%zx,dir=%x)\n",
		__func__, addr, off, sz, dir);
		__func__, addr, sz, dir);


	buf = find_safe_buffer_dev(dev, addr, __func__);
	buf = find_safe_buffer_dev(dev, addr, __func__);
	if (!buf)
	if (!buf)
@@ -377,8 +377,8 @@ static int __dmabounce_sync_for_cpu(struct device *dev, dma_addr_t addr,


	BUG_ON(buf->direction != dir);
	BUG_ON(buf->direction != dir);


	dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n",
	dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x off=%#lx) mapped to %p (dma=%#x)\n",
		__func__, buf->ptr, virt_to_dma(dev, buf->ptr),
		__func__, buf->ptr, virt_to_dma(dev, buf->ptr), off,
		buf->safe, buf->safe_dma_addr);
		buf->safe, buf->safe_dma_addr);


	DO_STATS(dev->archdata.dmabounce->bounce_count++);
	DO_STATS(dev->archdata.dmabounce->bounce_count++);
@@ -406,8 +406,8 @@ static int __dmabounce_sync_for_device(struct device *dev, dma_addr_t addr,
	struct safe_buffer *buf;
	struct safe_buffer *buf;
	unsigned long off;
	unsigned long off;


	dev_dbg(dev, "%s(dma=%#x,off=%#lx,sz=%zx,dir=%x)\n",
	dev_dbg(dev, "%s(dma=%#x,sz=%zx,dir=%x)\n",
		__func__, addr, off, sz, dir);
		__func__, addr, sz, dir);


	buf = find_safe_buffer_dev(dev, addr, __func__);
	buf = find_safe_buffer_dev(dev, addr, __func__);
	if (!buf)
	if (!buf)
@@ -417,8 +417,8 @@ static int __dmabounce_sync_for_device(struct device *dev, dma_addr_t addr,


	BUG_ON(buf->direction != dir);
	BUG_ON(buf->direction != dir);


	dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x) mapped to %p (dma=%#x)\n",
	dev_dbg(dev, "%s: unsafe buffer %p (dma=%#x off=%#lx) mapped to %p (dma=%#x)\n",
		__func__, buf->ptr, virt_to_dma(dev, buf->ptr),
		__func__, buf->ptr, virt_to_dma(dev, buf->ptr), off,
		buf->safe, buf->safe_dma_addr);
		buf->safe, buf->safe_dma_addr);


	DO_STATS(dev->archdata.dmabounce->bounce_count++);
	DO_STATS(dev->archdata.dmabounce->bounce_count++);
+2 −2
Original line number Original line Diff line number Diff line
@@ -271,9 +271,9 @@ static struct platform_device *create_simple_dss_pdev(const char *pdev_name,
		goto err;
		goto err;
	}
	}


	r = omap_device_register(pdev);
	r = platform_device_add(pdev);
	if (r) {
	if (r) {
		pr_err("Could not register omap_device for %s\n", pdev_name);
		pr_err("Could not register platform_device for %s\n", pdev_name);
		goto err;
		goto err;
	}
	}


Loading