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

Commit 236b11de authored by Mark Brown's avatar Mark Brown
Browse files

Merge branch 'ib-mfd-regulator-3.15' of...

Merge branch 'ib-mfd-regulator-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into regulator-s2mps11
parents 0f4cc282 ba3e31f8
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -92,3 +92,6 @@ extra_certificates
signing_key.priv
signing_key.priv
signing_key.x509
signing_key.x509
x509.genkey
x509.genkey

# Kconfig presets
all.config
+20 −4
Original line number Original line Diff line number Diff line
@@ -29,6 +29,8 @@ DMA-ISA-LPC.txt
	- How to do DMA with ISA (and LPC) devices.
	- How to do DMA with ISA (and LPC) devices.
DMA-attributes.txt
DMA-attributes.txt
	- listing of the various possible attributes a DMA region can have
	- listing of the various possible attributes a DMA region can have
dmatest.txt
	- how to compile, configure and use the dmatest system.
DocBook/
DocBook/
	- directory with DocBook templates etc. for kernel documentation.
	- directory with DocBook templates etc. for kernel documentation.
EDID/
EDID/
@@ -77,6 +79,8 @@ arm/
	- directory with info about Linux on the ARM architecture.
	- directory with info about Linux on the ARM architecture.
arm64/
arm64/
	- directory with info about Linux on the 64 bit ARM architecture.
	- directory with info about Linux on the 64 bit ARM architecture.
assoc_array.txt
	- generic associative array intro.
atomic_ops.txt
atomic_ops.txt
	- semantics and behavior of atomic and bitmask operations.
	- semantics and behavior of atomic and bitmask operations.
auxdisplay/
auxdisplay/
@@ -87,6 +91,8 @@ bad_memory.txt
	- how to use kernel parameters to exclude bad RAM regions.
	- how to use kernel parameters to exclude bad RAM regions.
basic_profiling.txt
basic_profiling.txt
	- basic instructions for those who wants to profile Linux kernel.
	- basic instructions for those who wants to profile Linux kernel.
bcache.txt
	- Block-layer cache on fast SSDs to improve slow (raid) I/O performance.
binfmt_misc.txt
binfmt_misc.txt
	- info on the kernel support for extra binary formats.
	- info on the kernel support for extra binary formats.
blackfin/
blackfin/
@@ -171,6 +177,8 @@ early-userspace/
	- info about initramfs, klibc, and userspace early during boot.
	- info about initramfs, klibc, and userspace early during boot.
edac.txt
edac.txt
	- information on EDAC - Error Detection And Correction
	- information on EDAC - Error Detection And Correction
efi-stub.txt
	- How to use the EFI boot stub to bypass GRUB or elilo on EFI systems.
eisa.txt
eisa.txt
	- info on EISA bus support.
	- info on EISA bus support.
email-clients.txt
email-clients.txt
@@ -195,8 +203,8 @@ futex-requeue-pi.txt
	- info on requeueing of tasks from a non-PI futex to a PI futex
	- info on requeueing of tasks from a non-PI futex to a PI futex
gcov.txt
gcov.txt
	- use of GCC's coverage testing tool "gcov" with the Linux kernel
	- use of GCC's coverage testing tool "gcov" with the Linux kernel
gpio.txt
gpio/
	- overview of GPIO (General Purpose Input/Output) access conventions.
	- gpio related documentation
hid/
hid/
	- directory with information on human interface devices
	- directory with information on human interface devices
highuid.txt
highuid.txt
@@ -255,6 +263,8 @@ kernel-docs.txt
	- listing of various WWW + books that document kernel internals.
	- listing of various WWW + books that document kernel internals.
kernel-parameters.txt
kernel-parameters.txt
	- summary listing of command line / boot prompt args for the kernel.
	- summary listing of command line / boot prompt args for the kernel.
kernel-per-CPU-kthreads.txt
	- List of all per-CPU kthreads and how they introduce jitter.
kmemcheck.txt
kmemcheck.txt
	- info on dynamic checker that detects uses of uninitialized memory.
	- info on dynamic checker that detects uses of uninitialized memory.
kmemleak.txt
kmemleak.txt
@@ -299,8 +309,6 @@ memory-devices/
	- directory with info on parts like the Texas Instruments EMIF driver
	- directory with info on parts like the Texas Instruments EMIF driver
memory-hotplug.txt
memory-hotplug.txt
	- Hotpluggable memory support, how to use and current status.
	- Hotpluggable memory support, how to use and current status.
memory.txt
	- info on typical Linux memory problems.
metag/
metag/
	- directory with info about Linux on Meta architecture.
	- directory with info about Linux on Meta architecture.
mips/
mips/
@@ -311,6 +319,8 @@ mmc/
	- directory with info about the MMC subsystem
	- directory with info about the MMC subsystem
mn10300/
mn10300/
	- directory with info about the mn10300 architecture port
	- directory with info about the mn10300 architecture port
module-signing.txt
	- Kernel module signing for increased security when loading modules.
mtd/
mtd/
	- directory with info about memory technology devices (flash)
	- directory with info about memory technology devices (flash)
mono.txt
mono.txt
@@ -343,6 +353,8 @@ pcmcia/
	- info on the Linux PCMCIA driver.
	- info on the Linux PCMCIA driver.
percpu-rw-semaphore.txt
percpu-rw-semaphore.txt
	- RCU based read-write semaphore optimized for locking for reading
	- RCU based read-write semaphore optimized for locking for reading
phy.txt
	- Description of the generic PHY framework.
pi-futex.txt
pi-futex.txt
	- documentation on lightweight priority inheritance futexes.
	- documentation on lightweight priority inheritance futexes.
pinctrl.txt
pinctrl.txt
@@ -431,6 +443,8 @@ sysrq.txt
	- info on the magic SysRq key.
	- info on the magic SysRq key.
target/
target/
	- directory with info on generating TCM v4 fabric .ko modules
	- directory with info on generating TCM v4 fabric .ko modules
this_cpu_ops.txt
	- List rationale behind and the way to use this_cpu operations.
thermal/
thermal/
	- directory with information on managing thermal issues (CPU/temp)
	- directory with information on managing thermal issues (CPU/temp)
trace/
trace/
@@ -469,6 +483,8 @@ wimax/
	- directory with info about Intel Wireless Wimax Connections
	- directory with info about Intel Wireless Wimax Connections
workqueue.txt
workqueue.txt
	- information on the Concurrency Managed Workqueue implementation
	- information on the Concurrency Managed Workqueue implementation
ww-mutex-design.txt
	- Intro to Mutex wait/would deadlock handling.s
x86/x86_64/
x86/x86_64/
	- directory with info on Linux support for AMD x86-64 (Hammer) machines.
	- directory with info on Linux support for AMD x86-64 (Hammer) machines.
xtensa/
xtensa/
+109 −10
Original line number Original line Diff line number Diff line
@@ -82,7 +82,19 @@ Most of the hard work is done for the driver in the PCI layer. It simply
has to request that the PCI layer set up the MSI capability for this
has to request that the PCI layer set up the MSI capability for this
device.
device.


4.2.1 pci_enable_msi_range
4.2.1 pci_enable_msi

int pci_enable_msi(struct pci_dev *dev)

A successful call allocates ONE interrupt to the device, regardless
of how many MSIs the device supports.  The device is switched from
pin-based interrupt mode to MSI mode.  The dev->irq number is changed
to a new number which represents the message signaled interrupt;
consequently, this function should be called before the driver calls
request_irq(), because an MSI is delivered via a vector that is
different from the vector of a pin-based interrupt.

4.2.2 pci_enable_msi_range


int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec)
int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec)


@@ -147,6 +159,11 @@ static int foo_driver_enable_msi(struct pci_dev *pdev, int nvec)
	return pci_enable_msi_range(pdev, nvec, nvec);
	return pci_enable_msi_range(pdev, nvec, nvec);
}
}


Note, unlike pci_enable_msi_exact() function, which could be also used to
enable a particular number of MSI-X interrupts, pci_enable_msi_range()
returns either a negative errno or 'nvec' (not negative errno or 0 - as
pci_enable_msi_exact() does).

4.2.1.3 Single MSI mode
4.2.1.3 Single MSI mode


The most notorious example of the request type described above is
The most notorious example of the request type described above is
@@ -158,7 +175,27 @@ static int foo_driver_enable_single_msi(struct pci_dev *pdev)
	return pci_enable_msi_range(pdev, 1, 1);
	return pci_enable_msi_range(pdev, 1, 1);
}
}


4.2.2 pci_disable_msi
Note, unlike pci_enable_msi() function, which could be also used to
enable the single MSI mode, pci_enable_msi_range() returns either a
negative errno or 1 (not negative errno or 0 - as pci_enable_msi()
does).

4.2.3 pci_enable_msi_exact

int pci_enable_msi_exact(struct pci_dev *dev, int nvec)

This variation on pci_enable_msi_range() call allows a device driver to
request exactly 'nvec' MSIs.

If this function returns a negative number, it indicates an error and
the driver should not attempt to request any more MSI interrupts for
this device.

By contrast with pci_enable_msi_range() function, pci_enable_msi_exact()
returns zero in case of success, which indicates MSI interrupts have been
successfully allocated.

4.2.4 pci_disable_msi


void pci_disable_msi(struct pci_dev *dev)
void pci_disable_msi(struct pci_dev *dev)


@@ -172,7 +209,7 @@ on any interrupt for which it previously called request_irq().
Failure to do so results in a BUG_ON(), leaving the device with
Failure to do so results in a BUG_ON(), leaving the device with
MSI enabled and thus leaking its vector.
MSI enabled and thus leaking its vector.


4.2.3 pci_msi_vec_count
4.2.4 pci_msi_vec_count


int pci_msi_vec_count(struct pci_dev *dev)
int pci_msi_vec_count(struct pci_dev *dev)


@@ -257,7 +294,7 @@ possible, likely up to the limit returned by pci_msix_vec_count() function:


static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec)
static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec)
{
{
	return pci_enable_msi_range(adapter->pdev, adapter->msix_entries,
	return pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
				     1, nvec);
				     1, nvec);
}
}


@@ -269,7 +306,7 @@ In this case the function could look like this:


static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec)
static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec)
{
{
	return pci_enable_msi_range(adapter->pdev, adapter->msix_entries,
	return pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
				     FOO_DRIVER_MINIMUM_NVEC, nvec);
				     FOO_DRIVER_MINIMUM_NVEC, nvec);
}
}


@@ -282,10 +319,15 @@ parameters:


static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec)
static int foo_driver_enable_msix(struct foo_adapter *adapter, int nvec)
{
{
	return pci_enable_msi_range(adapter->pdev, adapter->msix_entries,
	return pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
				     nvec, nvec);
				     nvec, nvec);
}
}


Note, unlike pci_enable_msix_exact() function, which could be also used to
enable a particular number of MSI-X interrupts, pci_enable_msix_range()
returns either a negative errno or 'nvec' (not negative errno or 0 - as
pci_enable_msix_exact() does).

4.3.1.3 Specific requirements to the number of MSI-X interrupts
4.3.1.3 Specific requirements to the number of MSI-X interrupts


As noted above, there could be devices that can not operate with just any
As noted above, there could be devices that can not operate with just any
@@ -332,7 +374,64 @@ Note how pci_enable_msix_range() return value is analized for a fallback -
any error code other than -ENOSPC indicates a fatal error and should not
any error code other than -ENOSPC indicates a fatal error and should not
be retried.
be retried.


4.3.2 pci_disable_msix
4.3.2 pci_enable_msix_exact

int pci_enable_msix_exact(struct pci_dev *dev,
			  struct msix_entry *entries, int nvec)

This variation on pci_enable_msix_range() call allows a device driver to
request exactly 'nvec' MSI-Xs.

If this function returns a negative number, it indicates an error and
the driver should not attempt to allocate any more MSI-X interrupts for
this device.

By contrast with pci_enable_msix_range() function, pci_enable_msix_exact()
returns zero in case of success, which indicates MSI-X interrupts have been
successfully allocated.

Another version of a routine that enables MSI-X mode for a device with
specific requirements described in chapter 4.3.1.3 might look like this:

/*
 * Assume 'minvec' and 'maxvec' are non-zero
 */
static int foo_driver_enable_msix(struct foo_adapter *adapter,
				  int minvec, int maxvec)
{
	int rc;

	minvec = roundup_pow_of_two(minvec);
	maxvec = rounddown_pow_of_two(maxvec);

	if (minvec > maxvec)
		return -ERANGE;

retry:
	rc = pci_enable_msix_exact(adapter->pdev,
				   adapter->msix_entries, maxvec);

	/*
	 * -ENOSPC is the only error code allowed to be analyzed
	 */
	if (rc == -ENOSPC) {
		if (maxvec == 1)
			return -ENOSPC;

		maxvec /= 2;

		if (minvec > maxvec)
			return -ENOSPC;

		goto retry;
	} else if (rc < 0) {
		return rc;
	}

	return maxvec;
}

4.3.3 pci_disable_msix


void pci_disable_msix(struct pci_dev *dev)
void pci_disable_msix(struct pci_dev *dev)


+2 −0
Original line number Original line Diff line number Diff line
@@ -8,6 +8,8 @@ listRCU.txt
	- Using RCU to Protect Read-Mostly Linked Lists
	- Using RCU to Protect Read-Mostly Linked Lists
lockdep.txt
lockdep.txt
	- RCU and lockdep checking
	- RCU and lockdep checking
lockdep-splat.txt
	- RCU Lockdep splats explained.
NMI-RCU.txt
NMI-RCU.txt
	- Using RCU to Protect Dynamic NMI Handlers
	- Using RCU to Protect Dynamic NMI Handlers
rcubarrier.txt
rcubarrier.txt
+14 −0
Original line number Original line Diff line number Diff line
@@ -4,6 +4,8 @@ Booting
	- requirements for booting
	- requirements for booting
Interrupts
Interrupts
	- ARM Interrupt subsystem documentation
	- ARM Interrupt subsystem documentation
IXP4xx
	- Intel IXP4xx Network processor.
msm
msm
	- MSM specific documentation
	- MSM specific documentation
Netwinder
Netwinder
@@ -24,8 +26,16 @@ SPEAr
	- ST SPEAr platform Linux Overview
	- ST SPEAr platform Linux Overview
VFP/
VFP/
	- Release notes for Linux Kernel Vector Floating Point support code
	- Release notes for Linux Kernel Vector Floating Point support code
cluster-pm-race-avoidance.txt
	- Algorithm for CPU and Cluster setup/teardown
empeg/
empeg/
	- Ltd's Empeg MP3 Car Audio Player
	- Ltd's Empeg MP3 Car Audio Player
firmware.txt
	- Secure firmware registration and calling.
kernel_mode_neon.txt
	- How to use NEON instructions in kernel mode
kernel_user_helpers.txt
	- Helper functions in kernel space made available for userspace.
mem_alignment
mem_alignment
	- alignment abort handler documentation
	- alignment abort handler documentation
memory.txt
memory.txt
@@ -34,3 +44,7 @@ nwfpe/
	- NWFPE floating point emulator documentation
	- NWFPE floating point emulator documentation
swp_emulation
swp_emulation
	- SWP/SWPB emulation handler/logging description
	- SWP/SWPB emulation handler/logging description
tcm.txt
	- ARM Tightly Coupled Memory
vlocks.txt
	- Voting locks, low-level mechanism relying on memory system atomic writes.
Loading