You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge 3.8-rc5 into staging-next
This resolves a merge issue with a iio driver, and the zram code. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -116,7 +116,7 @@ my_suspend (struct pci_dev * pci_dev,
|
|||||||
return 0; /* a negative value on error, 0 on success. */
|
return 0; /* a negative value on error, 0 on success. */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __devexit
|
static void
|
||||||
my_remove (struct pci_dev * pci_dev)
|
my_remove (struct pci_dev * pci_dev)
|
||||||
{
|
{
|
||||||
my_device *my = pci_get_drvdata (pci_dev);
|
my_device *my = pci_get_drvdata (pci_dev);
|
||||||
@@ -124,7 +124,7 @@ my_remove (struct pci_dev * pci_dev)
|
|||||||
/* Describe me. */
|
/* Describe me. */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __devinit
|
static int
|
||||||
my_probe (struct pci_dev * pci_dev,
|
my_probe (struct pci_dev * pci_dev,
|
||||||
const struct pci_device_id * pci_id)
|
const struct pci_device_id * pci_id)
|
||||||
{
|
{
|
||||||
@@ -157,7 +157,7 @@ my_pci_driver = {
|
|||||||
.id_table = my_pci_device_ids,
|
.id_table = my_pci_device_ids,
|
||||||
|
|
||||||
.probe = my_probe,
|
.probe = my_probe,
|
||||||
.remove = __devexit_p (my_remove),
|
.remove = my_remove,
|
||||||
|
|
||||||
/* Power management functions. */
|
/* Power management functions. */
|
||||||
.suspend = my_suspend,
|
.suspend = my_suspend,
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ To notify SR-IOV core of Virtual Function Migration:
|
|||||||
|
|
||||||
Following piece of code illustrates the usage of the SR-IOV API.
|
Following piece of code illustrates the usage of the SR-IOV API.
|
||||||
|
|
||||||
static int __devinit dev_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
static int dev_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
{
|
{
|
||||||
pci_enable_sriov(dev, NR_VIRTFN);
|
pci_enable_sriov(dev, NR_VIRTFN);
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ static int __devinit dev_probe(struct pci_dev *dev, const struct pci_device_id *
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __devexit dev_remove(struct pci_dev *dev)
|
static void dev_remove(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
pci_disable_sriov(dev);
|
pci_disable_sriov(dev);
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ static struct pci_driver dev_driver = {
|
|||||||
.name = "SR-IOV Physical Function driver",
|
.name = "SR-IOV Physical Function driver",
|
||||||
.id_table = dev_id_table,
|
.id_table = dev_id_table,
|
||||||
.probe = dev_probe,
|
.probe = dev_probe,
|
||||||
.remove = __devexit_p(dev_remove),
|
.remove = dev_remove,
|
||||||
.suspend = dev_suspend,
|
.suspend = dev_suspend,
|
||||||
.resume = dev_resume,
|
.resume = dev_resume,
|
||||||
.shutdown = dev_shutdown,
|
.shutdown = dev_shutdown,
|
||||||
|
|||||||
@@ -183,12 +183,6 @@ Please mark the initialization and cleanup functions where appropriate
|
|||||||
initializes.
|
initializes.
|
||||||
__exit Exit code. Ignored for non-modular drivers.
|
__exit Exit code. Ignored for non-modular drivers.
|
||||||
|
|
||||||
|
|
||||||
__devinit Device initialization code.
|
|
||||||
Identical to __init if the kernel is not compiled
|
|
||||||
with CONFIG_HOTPLUG, normal function otherwise.
|
|
||||||
__devexit The same for __exit.
|
|
||||||
|
|
||||||
Tips on when/where to use the above attributes:
|
Tips on when/where to use the above attributes:
|
||||||
o The module_init()/module_exit() functions (and all
|
o The module_init()/module_exit() functions (and all
|
||||||
initialization functions called _only_ from these)
|
initialization functions called _only_ from these)
|
||||||
@@ -196,20 +190,6 @@ Tips on when/where to use the above attributes:
|
|||||||
|
|
||||||
o Do not mark the struct pci_driver.
|
o Do not mark the struct pci_driver.
|
||||||
|
|
||||||
o The ID table array should be marked __devinitconst; this is done
|
|
||||||
automatically if the table is declared with DEFINE_PCI_DEVICE_TABLE().
|
|
||||||
|
|
||||||
o The probe() and remove() functions should be marked __devinit
|
|
||||||
and __devexit respectively. All initialization functions
|
|
||||||
exclusively called by the probe() routine, can be marked __devinit.
|
|
||||||
Ditto for remove() and __devexit.
|
|
||||||
|
|
||||||
o If mydriver_remove() is marked with __devexit(), then all address
|
|
||||||
references to mydriver_remove must use __devexit_p(mydriver_remove)
|
|
||||||
(in the struct pci_driver declaration for example).
|
|
||||||
__devexit_p() will generate the function name _or_ NULL if the
|
|
||||||
function will be discarded. For an example, see drivers/net/tg3.c.
|
|
||||||
|
|
||||||
o Do NOT mark a function if you are not sure which mark to use.
|
o Do NOT mark a function if you are not sure which mark to use.
|
||||||
Better to not mark the function than mark the function wrong.
|
Better to not mark the function than mark the function wrong.
|
||||||
|
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ input driver:
|
|||||||
.acpi_match_table ACPI_PTR(mpu3050_acpi_match),
|
.acpi_match_table ACPI_PTR(mpu3050_acpi_match),
|
||||||
},
|
},
|
||||||
.probe = mpu3050_probe,
|
.probe = mpu3050_probe,
|
||||||
.remove = __devexit_p(mpu3050_remove),
|
.remove = mpu3050_remove,
|
||||||
.id_table = mpu3050_ids,
|
.id_table = mpu3050_ids,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -60,11 +60,6 @@ clks: clkctrl@80040000 {
|
|||||||
compatible = "fsl,imx23-clkctrl";
|
compatible = "fsl,imx23-clkctrl";
|
||||||
reg = <0x80040000 0x2000>;
|
reg = <0x80040000 0x2000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
clock-output-names =
|
|
||||||
...
|
|
||||||
"uart", /* 32 */
|
|
||||||
...
|
|
||||||
"end_of_list";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
auart0: serial@8006c000 {
|
auart0: serial@8006c000 {
|
||||||
|
|||||||
@@ -146,10 +146,6 @@ clks: ccm@53f80000 {
|
|||||||
compatible = "fsl,imx25-ccm";
|
compatible = "fsl,imx25-ccm";
|
||||||
reg = <0x53f80000 0x4000>;
|
reg = <0x53f80000 0x4000>;
|
||||||
interrupts = <31>;
|
interrupts = <31>;
|
||||||
clock-output-names = ...
|
|
||||||
"uart_ipg",
|
|
||||||
"uart_serial",
|
|
||||||
...;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1: serial@43f90000 {
|
uart1: serial@43f90000 {
|
||||||
|
|||||||
@@ -83,11 +83,6 @@ clks: clkctrl@80040000 {
|
|||||||
compatible = "fsl,imx28-clkctrl";
|
compatible = "fsl,imx28-clkctrl";
|
||||||
reg = <0x80040000 0x2000>;
|
reg = <0x80040000 0x2000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
clock-output-names =
|
|
||||||
...
|
|
||||||
"uart", /* 45 */
|
|
||||||
...
|
|
||||||
"end_of_list";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
auart0: serial@8006a000 {
|
auart0: serial@8006a000 {
|
||||||
|
|||||||
@@ -211,10 +211,6 @@ clks: ccm@020c4000 {
|
|||||||
reg = <0x020c4000 0x4000>;
|
reg = <0x020c4000 0x4000>;
|
||||||
interrupts = <0 87 0x04 0 88 0x04>;
|
interrupts = <0 87 0x04 0 88 0x04>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
clock-output-names = ...
|
|
||||||
"uart_ipg",
|
|
||||||
"uart_serial",
|
|
||||||
...;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1: serial@02020000 {
|
uart1: serial@02020000 {
|
||||||
|
|||||||
@@ -1,4 +1,19 @@
|
|||||||
GPIO line that should be set high/low to power off a device
|
Driver a GPIO line that can be used to turn the power off.
|
||||||
|
|
||||||
|
The driver supports both level triggered and edge triggered power off.
|
||||||
|
At driver load time, the driver will request the given gpio line and
|
||||||
|
install a pm_power_off handler. If the optional properties 'input' is
|
||||||
|
not found, the GPIO line will be driven in the inactive
|
||||||
|
state. Otherwise its configured as an input.
|
||||||
|
|
||||||
|
When the pm_power_off is called, the gpio is configured as an output,
|
||||||
|
and drive active, so triggering a level triggered power off
|
||||||
|
condition. This will also cause an inactive->active edge condition, so
|
||||||
|
triggering positive edge triggered power off. After a delay of 100ms,
|
||||||
|
the GPIO is set to inactive, thus causing an active->inactive edge,
|
||||||
|
triggering negative edge triggered power off. After another 100ms
|
||||||
|
delay the GPIO is driver active again. If the power is still on and
|
||||||
|
the CPU still running after a 3000ms delay, a WARN_ON(1) is emitted.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : should be "gpio-poweroff".
|
- compatible : should be "gpio-poweroff".
|
||||||
@@ -13,10 +28,9 @@ Optional properties:
|
|||||||
property is not specified, the GPIO is initialized as an output in its
|
property is not specified, the GPIO is initialized as an output in its
|
||||||
inactive state.
|
inactive state.
|
||||||
|
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
gpio-poweroff {
|
gpio-poweroff {
|
||||||
compatible = "gpio-poweroff";
|
compatible = "gpio-poweroff";
|
||||||
gpios = <&gpio 4 0>; /* GPIO 4 Active Low */
|
gpios = <&gpio 4 0>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -81,7 +81,8 @@ PA31 TXD4
|
|||||||
Required properties for pin configuration node:
|
Required properties for pin configuration node:
|
||||||
- atmel,pins: 4 integers array, represents a group of pins mux and config
|
- atmel,pins: 4 integers array, represents a group of pins mux and config
|
||||||
setting. The format is atmel,pins = <PIN_BANK PIN_BANK_NUM PERIPH CONFIG>.
|
setting. The format is atmel,pins = <PIN_BANK PIN_BANK_NUM PERIPH CONFIG>.
|
||||||
The PERIPH 0 means gpio.
|
The PERIPH 0 means gpio, PERIPH 1 is periph A, PERIPH 2 is periph B...
|
||||||
|
PIN_BANK 0 is pioA, PIN_BANK 1 is pioB...
|
||||||
|
|
||||||
Bits used for CONFIG:
|
Bits used for CONFIG:
|
||||||
PULL_UP (1 << 0): indicate this pin need a pull up.
|
PULL_UP (1 << 0): indicate this pin need a pull up.
|
||||||
@@ -126,7 +127,7 @@ pinctrl@fffff400 {
|
|||||||
pinctrl_dbgu: dbgu-0 {
|
pinctrl_dbgu: dbgu-0 {
|
||||||
atmel,pins =
|
atmel,pins =
|
||||||
<1 14 0x1 0x0 /* PB14 periph A */
|
<1 14 0x1 0x0 /* PB14 periph A */
|
||||||
1 15 0x1 0x1>; /* PB15 periph with pullup */
|
1 15 0x1 0x1>; /* PB15 periph A with pullup */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
CSR SiRFprimaII pinmux controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "sirf,prima2-pinctrl"
|
||||||
|
- reg : Address range of the pinctrl registers
|
||||||
|
- interrupts : Interrupts used by every GPIO group
|
||||||
|
- gpio-controller : Indicates this device is a GPIO controller
|
||||||
|
- interrupt-controller : Marks the device node as an interrupt controller
|
||||||
|
Optional properties:
|
||||||
|
- sirf,pullups : if n-th bit of m-th bank is set, set a pullup on GPIO-n of bank m
|
||||||
|
- sirf,pulldowns : if n-th bit of m-th bank is set, set a pulldown on GPIO-n of bank m
|
||||||
|
|
||||||
|
Please refer to pinctrl-bindings.txt in this directory for details of the common
|
||||||
|
pinctrl bindings used by client devices.
|
||||||
|
|
||||||
|
SiRFprimaII's pinmux nodes act as a container for an abitrary number of subnodes.
|
||||||
|
Each of these subnodes represents some desired configuration for a group of pins.
|
||||||
|
|
||||||
|
Required subnode-properties:
|
||||||
|
- sirf,pins : An array of strings. Each string contains the name of a group.
|
||||||
|
- sirf,function: A string containing the name of the function to mux to the
|
||||||
|
group.
|
||||||
|
|
||||||
|
Valid values for group and function names can be found from looking at the
|
||||||
|
group and function arrays in driver files:
|
||||||
|
drivers/pinctrl/pinctrl-sirf.c
|
||||||
|
|
||||||
|
For example, pinctrl might have subnodes like the following:
|
||||||
|
uart2_pins_a: uart2@0 {
|
||||||
|
uart {
|
||||||
|
sirf,pins = "uart2grp";
|
||||||
|
sirf,function = "uart2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
uart2_noflow_pins_a: uart2@1 {
|
||||||
|
uart {
|
||||||
|
sirf,pins = "uart2_nostreamctrlgrp";
|
||||||
|
sirf,function = "uart2_nostreamctrl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
For a specific board, if it wants to use uart2 without hardware flow control,
|
||||||
|
it can add the following to its board-specific .dts file.
|
||||||
|
uart2: uart@0xb0070000 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart2_noflow_pins_a>;
|
||||||
|
}
|
||||||
@@ -175,9 +175,9 @@ consists of multiple segments as described below.
|
|||||||
align with the zone size <-|
|
align with the zone size <-|
|
||||||
|-> align with the segment size
|
|-> align with the segment size
|
||||||
_________________________________________________________________________
|
_________________________________________________________________________
|
||||||
| | | Node | Segment | Segment | |
|
| | | Segment | Node | Segment | |
|
||||||
| Superblock | Checkpoint | Address | Info. | Summary | Main |
|
| Superblock | Checkpoint | Info. | Address | Summary | Main |
|
||||||
| (SB) | (CP) | Table (NAT) | Table (SIT) | Area (SSA) | |
|
| (SB) | (CP) | Table (SIT) | Table (NAT) | Area (SSA) | |
|
||||||
|____________|_____2______|______N______|______N______|______N_____|__N___|
|
|____________|_____2______|______N______|______N______|______N_____|__N___|
|
||||||
. .
|
. .
|
||||||
. .
|
. .
|
||||||
@@ -200,14 +200,14 @@ consists of multiple segments as described below.
|
|||||||
: It contains file system information, bitmaps for valid NAT/SIT sets, orphan
|
: It contains file system information, bitmaps for valid NAT/SIT sets, orphan
|
||||||
inode lists, and summary entries of current active segments.
|
inode lists, and summary entries of current active segments.
|
||||||
|
|
||||||
- Node Address Table (NAT)
|
|
||||||
: It is composed of a block address table for all the node blocks stored in
|
|
||||||
Main area.
|
|
||||||
|
|
||||||
- Segment Information Table (SIT)
|
- Segment Information Table (SIT)
|
||||||
: It contains segment information such as valid block count and bitmap for the
|
: It contains segment information such as valid block count and bitmap for the
|
||||||
validity of all the blocks.
|
validity of all the blocks.
|
||||||
|
|
||||||
|
- Node Address Table (NAT)
|
||||||
|
: It is composed of a block address table for all the node blocks stored in
|
||||||
|
Main area.
|
||||||
|
|
||||||
- Segment Summary Area (SSA)
|
- Segment Summary Area (SSA)
|
||||||
: It contains summary entries which contains the owner information of all the
|
: It contains summary entries which contains the owner information of all the
|
||||||
data and node blocks stored in Main area.
|
data and node blocks stored in Main area.
|
||||||
@@ -236,13 +236,13 @@ For file system consistency, each CP points to which NAT and SIT copies are
|
|||||||
valid, as shown as below.
|
valid, as shown as below.
|
||||||
|
|
||||||
+--------+----------+---------+
|
+--------+----------+---------+
|
||||||
| CP | NAT | SIT |
|
| CP | SIT | NAT |
|
||||||
+--------+----------+---------+
|
+--------+----------+---------+
|
||||||
. . . .
|
. . . .
|
||||||
. . . .
|
. . . .
|
||||||
. . . .
|
. . . .
|
||||||
+-------+-------+--------+--------+--------+--------+
|
+-------+-------+--------+--------+--------+--------+
|
||||||
| CP #0 | CP #1 | NAT #0 | NAT #1 | SIT #0 | SIT #1 |
|
| CP #0 | CP #1 | SIT #0 | SIT #1 | NAT #0 | NAT #1 |
|
||||||
+-------+-------+--------+--------+--------+--------+
|
+-------+-------+--------+--------+--------+--------+
|
||||||
| ^ ^
|
| ^ ^
|
||||||
| | |
|
| | |
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ Example (from the nxp OHCI driver):
|
|||||||
|
|
||||||
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
|
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
|
||||||
|
|
||||||
static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev)
|
static int usb_hcd_nxp_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
(...)
|
(...)
|
||||||
struct i2c_adapter *i2c_adap;
|
struct i2c_adapter *i2c_adap;
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ neigh/default/unres_qlen_bytes - INTEGER
|
|||||||
The maximum number of bytes which may be used by packets
|
The maximum number of bytes which may be used by packets
|
||||||
queued for each unresolved address by other network layers.
|
queued for each unresolved address by other network layers.
|
||||||
(added in linux 3.3)
|
(added in linux 3.3)
|
||||||
Seting negative value is meaningless and will retrun error.
|
Setting negative value is meaningless and will return error.
|
||||||
Default: 65536 Bytes(64KB)
|
Default: 65536 Bytes(64KB)
|
||||||
|
|
||||||
neigh/default/unres_qlen - INTEGER
|
neigh/default/unres_qlen - INTEGER
|
||||||
@@ -215,7 +215,7 @@ tcp_ecn - INTEGER
|
|||||||
Possible values are:
|
Possible values are:
|
||||||
0 Disable ECN. Neither initiate nor accept ECN.
|
0 Disable ECN. Neither initiate nor accept ECN.
|
||||||
1 Always request ECN on outgoing connection attempts.
|
1 Always request ECN on outgoing connection attempts.
|
||||||
2 Enable ECN when requested by incomming connections
|
2 Enable ECN when requested by incoming connections
|
||||||
but do not request ECN on outgoing connections.
|
but do not request ECN on outgoing connections.
|
||||||
Default: 2
|
Default: 2
|
||||||
|
|
||||||
@@ -503,7 +503,7 @@ tcp_fastopen - INTEGER
|
|||||||
tcp_syn_retries - INTEGER
|
tcp_syn_retries - INTEGER
|
||||||
Number of times initial SYNs for an active TCP connection attempt
|
Number of times initial SYNs for an active TCP connection attempt
|
||||||
will be retransmitted. Should not be higher than 255. Default value
|
will be retransmitted. Should not be higher than 255. Default value
|
||||||
is 6, which corresponds to 63seconds till the last restransmission
|
is 6, which corresponds to 63seconds till the last retransmission
|
||||||
with the current initial RTO of 1second. With this the final timeout
|
with the current initial RTO of 1second. With this the final timeout
|
||||||
for an active TCP connection attempt will happen after 127seconds.
|
for an active TCP connection attempt will happen after 127seconds.
|
||||||
|
|
||||||
@@ -1331,6 +1331,12 @@ force_tllao - BOOLEAN
|
|||||||
race condition where the sender deletes the cached link-layer address
|
race condition where the sender deletes the cached link-layer address
|
||||||
prior to receiving a response to a previous solicitation."
|
prior to receiving a response to a previous solicitation."
|
||||||
|
|
||||||
|
ndisc_notify - BOOLEAN
|
||||||
|
Define mode for notification of address and device changes.
|
||||||
|
0 - (default): do nothing
|
||||||
|
1 - Generate unsolicited neighbour advertisements when device is brought
|
||||||
|
up or hardware address changes.
|
||||||
|
|
||||||
icmp/*:
|
icmp/*:
|
||||||
ratelimit - INTEGER
|
ratelimit - INTEGER
|
||||||
Limit the maximal rates for sending ICMPv6 packets.
|
Limit the maximal rates for sending ICMPv6 packets.
|
||||||
@@ -1530,7 +1536,7 @@ cookie_hmac_alg - STRING
|
|||||||
* sha1
|
* sha1
|
||||||
* none
|
* none
|
||||||
Ability to assign md5 or sha1 as the selected alg is predicated on the
|
Ability to assign md5 or sha1 as the selected alg is predicated on the
|
||||||
configuarion of those algorithms at build time (CONFIG_CRYPTO_MD5 and
|
configuration of those algorithms at build time (CONFIG_CRYPTO_MD5 and
|
||||||
CONFIG_CRYPTO_SHA1).
|
CONFIG_CRYPTO_SHA1).
|
||||||
|
|
||||||
Default: Dependent on configuration. MD5 if available, else SHA1 if
|
Default: Dependent on configuration. MD5 if available, else SHA1 if
|
||||||
@@ -1548,7 +1554,7 @@ rcvbuf_policy - INTEGER
|
|||||||
blocking.
|
blocking.
|
||||||
|
|
||||||
1: rcvbuf space is per association
|
1: rcvbuf space is per association
|
||||||
0: recbuf space is per socket
|
0: rcvbuf space is per socket
|
||||||
|
|
||||||
Default: 0
|
Default: 0
|
||||||
|
|
||||||
|
|||||||
@@ -642,12 +642,13 @@ out the following operations:
|
|||||||
* During system suspend it calls pm_runtime_get_noresume() and
|
* During system suspend it calls pm_runtime_get_noresume() and
|
||||||
pm_runtime_barrier() for every device right before executing the
|
pm_runtime_barrier() for every device right before executing the
|
||||||
subsystem-level .suspend() callback for it. In addition to that it calls
|
subsystem-level .suspend() callback for it. In addition to that it calls
|
||||||
pm_runtime_disable() for every device right after executing the
|
__pm_runtime_disable() with 'false' as the second argument for every device
|
||||||
subsystem-level .suspend() callback for it.
|
right before executing the subsystem-level .suspend_late() callback for it.
|
||||||
|
|
||||||
* During system resume it calls pm_runtime_enable() and pm_runtime_put_sync()
|
* During system resume it calls pm_runtime_enable() and pm_runtime_put_sync()
|
||||||
for every device right before and right after executing the subsystem-level
|
for every device right after executing the subsystem-level .resume_early()
|
||||||
.resume() callback for it, respectively.
|
callback and right after executing the subsystem-level .resume() callback
|
||||||
|
for it, respectively.
|
||||||
|
|
||||||
7. Generic subsystem callbacks
|
7. Generic subsystem callbacks
|
||||||
|
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ static int rpmsg_sample_probe(struct rpmsg_channel *rpdev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __devexit rpmsg_sample_remove(struct rpmsg_channel *rpdev)
|
static void rpmsg_sample_remove(struct rpmsg_channel *rpdev)
|
||||||
{
|
{
|
||||||
dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n");
|
dev_info(&rpdev->dev, "rpmsg sample client driver is removed\n");
|
||||||
}
|
}
|
||||||
@@ -253,7 +253,7 @@ static struct rpmsg_driver rpmsg_sample_client = {
|
|||||||
.id_table = rpmsg_driver_sample_id_table,
|
.id_table = rpmsg_driver_sample_id_table,
|
||||||
.probe = rpmsg_sample_probe,
|
.probe = rpmsg_sample_probe,
|
||||||
.callback = rpmsg_sample_cb,
|
.callback = rpmsg_sample_cb,
|
||||||
.remove = __devexit_p(rpmsg_sample_remove),
|
.remove = rpmsg_sample_remove,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init init(void)
|
static int __init init(void)
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ SPI protocol drivers somewhat resemble platform device drivers:
|
|||||||
},
|
},
|
||||||
|
|
||||||
.probe = CHIP_probe,
|
.probe = CHIP_probe,
|
||||||
.remove = __devexit_p(CHIP_remove),
|
.remove = CHIP_remove,
|
||||||
.suspend = CHIP_suspend,
|
.suspend = CHIP_suspend,
|
||||||
.resume = CHIP_resume,
|
.resume = CHIP_resume,
|
||||||
};
|
};
|
||||||
@@ -355,7 +355,7 @@ device whose board_info gave a modalias of "CHIP". Your probe() code
|
|||||||
might look like this unless you're creating a device which is managing
|
might look like this unless you're creating a device which is managing
|
||||||
a bus (appearing under /sys/class/spi_master).
|
a bus (appearing under /sys/class/spi_master).
|
||||||
|
|
||||||
static int __devinit CHIP_probe(struct spi_device *spi)
|
static int CHIP_probe(struct spi_device *spi)
|
||||||
{
|
{
|
||||||
struct CHIP *chip;
|
struct CHIP *chip;
|
||||||
struct CHIP_platform_data *pdata;
|
struct CHIP_platform_data *pdata;
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ show up in /proc/sys/kernel:
|
|||||||
- l2cr [ PPC only ]
|
- l2cr [ PPC only ]
|
||||||
- modprobe ==> Documentation/debugging-modules.txt
|
- modprobe ==> Documentation/debugging-modules.txt
|
||||||
- modules_disabled
|
- modules_disabled
|
||||||
|
- msg_next_id [ sysv ipc ]
|
||||||
- msgmax
|
- msgmax
|
||||||
- msgmnb
|
- msgmnb
|
||||||
- msgmni
|
- msgmni
|
||||||
@@ -62,7 +63,9 @@ show up in /proc/sys/kernel:
|
|||||||
- rtsig-max
|
- rtsig-max
|
||||||
- rtsig-nr
|
- rtsig-nr
|
||||||
- sem
|
- sem
|
||||||
|
- sem_next_id [ sysv ipc ]
|
||||||
- sg-big-buff [ generic SCSI device (sg) ]
|
- sg-big-buff [ generic SCSI device (sg) ]
|
||||||
|
- shm_next_id [ sysv ipc ]
|
||||||
- shm_rmid_forced
|
- shm_rmid_forced
|
||||||
- shmall
|
- shmall
|
||||||
- shmmax [ sysv ipc ]
|
- shmmax [ sysv ipc ]
|
||||||
@@ -320,6 +323,22 @@ to false.
|
|||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
msg_next_id, sem_next_id, and shm_next_id:
|
||||||
|
|
||||||
|
These three toggles allows to specify desired id for next allocated IPC
|
||||||
|
object: message, semaphore or shared memory respectively.
|
||||||
|
|
||||||
|
By default they are equal to -1, which means generic allocation logic.
|
||||||
|
Possible values to set are in range {0..INT_MAX}.
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
1) kernel doesn't guarantee, that new object will have desired id. So,
|
||||||
|
it's up to userspace, how to handle an object with "wrong" id.
|
||||||
|
2) Toggle with non-default value will be set back to -1 by kernel after
|
||||||
|
successful IPC object allocation.
|
||||||
|
|
||||||
|
==============================================================
|
||||||
|
|
||||||
nmi_watchdog:
|
nmi_watchdog:
|
||||||
|
|
||||||
Enables/Disables the NMI watchdog on x86 systems. When the value is
|
Enables/Disables the NMI watchdog on x86 systems. When the value is
|
||||||
@@ -542,6 +561,19 @@ are doing anyway :)
|
|||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
shmall:
|
||||||
|
|
||||||
|
This parameter sets the total amount of shared memory pages that
|
||||||
|
can be used system wide. Hence, SHMALL should always be at least
|
||||||
|
ceil(shmmax/PAGE_SIZE).
|
||||||
|
|
||||||
|
If you are not sure what the default PAGE_SIZE is on your Linux
|
||||||
|
system, you can run the following command:
|
||||||
|
|
||||||
|
# getconf PAGE_SIZE
|
||||||
|
|
||||||
|
==============================================================
|
||||||
|
|
||||||
shmmax:
|
shmmax:
|
||||||
|
|
||||||
This value can be used to query and set the run time limit
|
This value can be used to query and set the run time limit
|
||||||
|
|||||||
@@ -174,8 +174,7 @@ The recommended approach is as follows:
|
|||||||
|
|
||||||
static atomic_t drv_instance = ATOMIC_INIT(0);
|
static atomic_t drv_instance = ATOMIC_INIT(0);
|
||||||
|
|
||||||
static int __devinit drv_probe(struct pci_dev *pdev,
|
static int drv_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
|
||||||
const struct pci_device_id *pci_id)
|
|
||||||
{
|
{
|
||||||
...
|
...
|
||||||
state->instance = atomic_inc_return(&drv_instance) - 1;
|
state->instance = atomic_inc_return(&drv_instance) - 1;
|
||||||
|
|||||||
@@ -182,8 +182,7 @@ int iterate(void *p)
|
|||||||
|
|
||||||
static atomic_t drv_instance = ATOMIC_INIT(0);
|
static atomic_t drv_instance = ATOMIC_INIT(0);
|
||||||
|
|
||||||
static int __devinit drv_probe(struct pci_dev *pdev,
|
static int drv_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
|
||||||
const struct pci_device_id *pci_id)
|
|
||||||
{
|
{
|
||||||
...
|
...
|
||||||
state->instance = atomic_inc_return(&drv_instance) - 1;
|
state->instance = atomic_inc_return(&drv_instance) - 1;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user