diff options
Diffstat (limited to 'Documentation/ABI')
-rw-r--r-- | Documentation/ABI/obsolete/proc-pid-oom_adj | 2 | ||||
-rw-r--r-- | Documentation/ABI/stable/firewire-cdev | 103 | ||||
-rw-r--r-- | Documentation/ABI/stable/sysfs-bus-firewire | 122 | ||||
-rw-r--r-- | Documentation/ABI/stable/vdso | 27 | ||||
-rw-r--r-- | Documentation/ABI/testing/pstore | 6 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-bus-i2c-devices-fsa9480 | 21 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-class-scsi_host | 13 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus | 8 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-driver-hid-wiimote | 10 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-module | 23 | ||||
-rw-r--r-- | Documentation/ABI/testing/sysfs-platform-ideapad-laptop | 17 |
11 files changed, 351 insertions, 1 deletions
diff --git a/Documentation/ABI/obsolete/proc-pid-oom_adj b/Documentation/ABI/obsolete/proc-pid-oom_adj index cf63f264ce0..9a3cb88ade4 100644 --- a/Documentation/ABI/obsolete/proc-pid-oom_adj +++ b/Documentation/ABI/obsolete/proc-pid-oom_adj | |||
@@ -14,7 +14,7 @@ Why: /proc/<pid>/oom_adj allows userspace to influence the oom killer's | |||
14 | 14 | ||
15 | A much more powerful interface, /proc/<pid>/oom_score_adj, was | 15 | A much more powerful interface, /proc/<pid>/oom_score_adj, was |
16 | introduced with the oom killer rewrite that allows users to increase or | 16 | introduced with the oom killer rewrite that allows users to increase or |
17 | decrease the badness() score linearly. This interface will replace | 17 | decrease the badness score linearly. This interface will replace |
18 | /proc/<pid>/oom_adj. | 18 | /proc/<pid>/oom_adj. |
19 | 19 | ||
20 | A warning will be emitted to the kernel log if an application uses this | 20 | A warning will be emitted to the kernel log if an application uses this |
diff --git a/Documentation/ABI/stable/firewire-cdev b/Documentation/ABI/stable/firewire-cdev new file mode 100644 index 00000000000..16d03082736 --- /dev/null +++ b/Documentation/ABI/stable/firewire-cdev | |||
@@ -0,0 +1,103 @@ | |||
1 | What: /dev/fw[0-9]+ | ||
2 | Date: May 2007 | ||
3 | KernelVersion: 2.6.22 | ||
4 | Contact: linux1394-devel@lists.sourceforge.net | ||
5 | Description: | ||
6 | The character device files /dev/fw* are the interface between | ||
7 | firewire-core and IEEE 1394 device drivers implemented in | ||
8 | userspace. The ioctl(2)- and read(2)-based ABI is defined and | ||
9 | documented in <linux/firewire-cdev.h>. | ||
10 | |||
11 | This ABI offers most of the features which firewire-core also | ||
12 | exposes to kernelspace IEEE 1394 drivers. | ||
13 | |||
14 | Each /dev/fw* is associated with one IEEE 1394 node, which can | ||
15 | be remote or local nodes. Operations on a /dev/fw* file have | ||
16 | different scope: | ||
17 | - The 1394 node which is associated with the file: | ||
18 | - Asynchronous request transmission | ||
19 | - Get the Configuration ROM | ||
20 | - Query node ID | ||
21 | - Query maximum speed of the path between this node | ||
22 | and local node | ||
23 | - The 1394 bus (i.e. "card") to which the node is attached to: | ||
24 | - Isochronous stream transmission and reception | ||
25 | - Asynchronous stream transmission and reception | ||
26 | - Asynchronous broadcast request transmission | ||
27 | - PHY packet transmission and reception | ||
28 | - Allocate, reallocate, deallocate isochronous | ||
29 | resources (channels, bandwidth) at the bus's IRM | ||
30 | - Query node IDs of local node, root node, IRM, bus | ||
31 | manager | ||
32 | - Query cycle time | ||
33 | - Bus reset initiation, bus reset event reception | ||
34 | - All 1394 buses: | ||
35 | - Allocation of IEEE 1212 address ranges on the local | ||
36 | link layers, reception of inbound requests to such | ||
37 | an address range, asynchronous response transmission | ||
38 | to inbound requests | ||
39 | - Addition of descriptors or directories to the local | ||
40 | nodes' Configuration ROM | ||
41 | |||
42 | Due to the different scope of operations and in order to let | ||
43 | userland implement different access permission models, some | ||
44 | operations are restricted to /dev/fw* files that are associated | ||
45 | with a local node: | ||
46 | - Addition of descriptors or directories to the local | ||
47 | nodes' Configuration ROM | ||
48 | - PHY packet transmission and reception | ||
49 | |||
50 | A /dev/fw* file remains associated with one particular node | ||
51 | during its entire life time. Bus topology changes, and hence | ||
52 | node ID changes, are tracked by firewire-core. ABI users do not | ||
53 | need to be aware of topology. | ||
54 | |||
55 | The following file operations are supported: | ||
56 | |||
57 | open(2) | ||
58 | Currently the only useful flags are O_RDWR. | ||
59 | |||
60 | ioctl(2) | ||
61 | Initiate various actions. Some take immediate effect, others | ||
62 | are performed asynchronously while or after the ioctl returns. | ||
63 | See the inline documentation in <linux/firewire-cdev.h> for | ||
64 | descriptions of all ioctls. | ||
65 | |||
66 | poll(2), select(2), epoll_wait(2) etc. | ||
67 | Watch for events to become available to be read. | ||
68 | |||
69 | read(2) | ||
70 | Receive various events. There are solicited events like | ||
71 | outbound asynchronous transaction completion or isochronous | ||
72 | buffer completion, and unsolicited events such as bus resets, | ||
73 | request reception, or PHY packet reception. Always use a read | ||
74 | buffer which is large enough to receive the largest event that | ||
75 | could ever arrive. See <linux/firewire-cdev.h> for descriptions | ||
76 | of all event types and for which ioctls affect reception of | ||
77 | events. | ||
78 | |||
79 | mmap(2) | ||
80 | Allocate a DMA buffer for isochronous reception or transmission | ||
81 | and map it into the process address space. The arguments should | ||
82 | be used as follows: addr = NULL, length = the desired buffer | ||
83 | size, i.e. number of packets times size of largest packet, | ||
84 | prot = at least PROT_READ for reception and at least PROT_WRITE | ||
85 | for transmission, flags = MAP_SHARED, fd = the handle to the | ||
86 | /dev/fw*, offset = 0. | ||
87 | |||
88 | Isochronous reception works in packet-per-buffer fashion except | ||
89 | for multichannel reception which works in buffer-fill mode. | ||
90 | |||
91 | munmap(2) | ||
92 | Unmap the isochronous I/O buffer from the process address space. | ||
93 | |||
94 | close(2) | ||
95 | Besides stopping and freeing I/O contexts that were associated | ||
96 | with the file descriptor, back out any changes to the local | ||
97 | nodes' Configuration ROM. Deallocate isochronous channels and | ||
98 | bandwidth at the IRM that were marked for kernel-assisted | ||
99 | re- and deallocation. | ||
100 | |||
101 | Users: libraw1394 | ||
102 | libdc1394 | ||
103 | tools like jujuutils, fwhack, ... | ||
diff --git a/Documentation/ABI/stable/sysfs-bus-firewire b/Documentation/ABI/stable/sysfs-bus-firewire new file mode 100644 index 00000000000..3d484e5dc84 --- /dev/null +++ b/Documentation/ABI/stable/sysfs-bus-firewire | |||
@@ -0,0 +1,122 @@ | |||
1 | What: /sys/bus/firewire/devices/fw[0-9]+/ | ||
2 | Date: May 2007 | ||
3 | KernelVersion: 2.6.22 | ||
4 | Contact: linux1394-devel@lists.sourceforge.net | ||
5 | Description: | ||
6 | IEEE 1394 node device attributes. | ||
7 | Read-only. Mutable during the node device's lifetime. | ||
8 | See IEEE 1212 for semantic definitions. | ||
9 | |||
10 | config_rom | ||
11 | Contents of the Configuration ROM register. | ||
12 | Binary attribute; an array of host-endian u32. | ||
13 | |||
14 | guid | ||
15 | The node's EUI-64 in the bus information block of | ||
16 | Configuration ROM. | ||
17 | Hexadecimal string representation of an u64. | ||
18 | |||
19 | |||
20 | What: /sys/bus/firewire/devices/fw[0-9]+/units | ||
21 | Date: June 2009 | ||
22 | KernelVersion: 2.6.31 | ||
23 | Contact: linux1394-devel@lists.sourceforge.net | ||
24 | Description: | ||
25 | IEEE 1394 node device attribute. | ||
26 | Read-only. Mutable during the node device's lifetime. | ||
27 | See IEEE 1212 for semantic definitions. | ||
28 | |||
29 | units | ||
30 | Summary of all units present in an IEEE 1394 node. | ||
31 | Contains space-separated tuples of specifier_id and | ||
32 | version of each unit present in the node. Specifier_id | ||
33 | and version are hexadecimal string representations of | ||
34 | u24 of the respective unit directory entries. | ||
35 | Specifier_id and version within each tuple are separated | ||
36 | by a colon. | ||
37 | |||
38 | Users: udev rules to set ownership and access permissions or ACLs of | ||
39 | /dev/fw[0-9]+ character device files | ||
40 | |||
41 | |||
42 | What: /sys/bus/firewire/devices/fw[0-9]+[.][0-9]+/ | ||
43 | Date: May 2007 | ||
44 | KernelVersion: 2.6.22 | ||
45 | Contact: linux1394-devel@lists.sourceforge.net | ||
46 | Description: | ||
47 | IEEE 1394 unit device attributes. | ||
48 | Read-only. Immutable during the unit device's lifetime. | ||
49 | See IEEE 1212 for semantic definitions. | ||
50 | |||
51 | modalias | ||
52 | Same as MODALIAS in the uevent at device creation. | ||
53 | |||
54 | rom_index | ||
55 | Offset of the unit directory within the parent device's | ||
56 | (node device's) Configuration ROM, in quadlets. | ||
57 | Decimal string representation. | ||
58 | |||
59 | |||
60 | What: /sys/bus/firewire/devices/*/ | ||
61 | Date: May 2007 | ||
62 | KernelVersion: 2.6.22 | ||
63 | Contact: linux1394-devel@lists.sourceforge.net | ||
64 | Description: | ||
65 | Attributes common to IEEE 1394 node devices and unit devices. | ||
66 | Read-only. Mutable during the node device's lifetime. | ||
67 | Immutable during the unit device's lifetime. | ||
68 | See IEEE 1212 for semantic definitions. | ||
69 | |||
70 | These attributes are only created if the root directory of an | ||
71 | IEEE 1394 node or the unit directory of an IEEE 1394 unit | ||
72 | actually contains according entries. | ||
73 | |||
74 | hardware_version | ||
75 | Hexadecimal string representation of an u24. | ||
76 | |||
77 | hardware_version_name | ||
78 | Contents of a respective textual descriptor leaf. | ||
79 | |||
80 | model | ||
81 | Hexadecimal string representation of an u24. | ||
82 | |||
83 | model_name | ||
84 | Contents of a respective textual descriptor leaf. | ||
85 | |||
86 | specifier_id | ||
87 | Hexadecimal string representation of an u24. | ||
88 | Mandatory in unit directories according to IEEE 1212. | ||
89 | |||
90 | vendor | ||
91 | Hexadecimal string representation of an u24. | ||
92 | Mandatory in the root directory according to IEEE 1212. | ||
93 | |||
94 | vendor_name | ||
95 | Contents of a respective textual descriptor leaf. | ||
96 | |||
97 | version | ||
98 | Hexadecimal string representation of an u24. | ||
99 | Mandatory in unit directories according to IEEE 1212. | ||
100 | |||
101 | |||
102 | What: /sys/bus/firewire/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id | ||
103 | formerly | ||
104 | /sys/bus/ieee1394/drivers/sbp2/fw*/host*/target*/*:*:*:*/ieee1394_id | ||
105 | Date: Feb 2004 | ||
106 | KernelVersion: 2.6.4 | ||
107 | Contact: linux1394-devel@lists.sourceforge.net | ||
108 | Description: | ||
109 | SCSI target port identifier and logical unit identifier of a | ||
110 | logical unit of an SBP-2 target. The identifiers are specified | ||
111 | in SAM-2...SAM-4 annex A. They are persistent and world-wide | ||
112 | unique properties the SBP-2 attached target. | ||
113 | |||
114 | Read-only attribute, immutable during the target's lifetime. | ||
115 | Format, as exposed by firewire-sbp2 since 2.6.22, May 2007: | ||
116 | Colon-separated hexadecimal string representations of | ||
117 | u64 EUI-64 : u24 directory_ID : u16 LUN | ||
118 | without 0x prefixes, without whitespace. The former sbp2 driver | ||
119 | (removed in 2.6.37 after being superseded by firewire-sbp2) used | ||
120 | a somewhat shorter format which was not as close to SAM. | ||
121 | |||
122 | Users: udev rules to create /dev/disk/by-id/ symlinks | ||
diff --git a/Documentation/ABI/stable/vdso b/Documentation/ABI/stable/vdso new file mode 100644 index 00000000000..8a1cbb59449 --- /dev/null +++ b/Documentation/ABI/stable/vdso | |||
@@ -0,0 +1,27 @@ | |||
1 | On some architectures, when the kernel loads any userspace program it | ||
2 | maps an ELF DSO into that program's address space. This DSO is called | ||
3 | the vDSO and it often contains useful and highly-optimized alternatives | ||
4 | to real syscalls. | ||
5 | |||
6 | These functions are called just like ordinary C function according to | ||
7 | your platform's ABI. Call them from a sensible context. (For example, | ||
8 | if you set CS on x86 to something strange, the vDSO functions are | ||
9 | within their rights to crash.) In addition, if you pass a bad | ||
10 | pointer to a vDSO function, you might get SIGSEGV instead of -EFAULT. | ||
11 | |||
12 | To find the DSO, parse the auxiliary vector passed to the program's | ||
13 | entry point. The AT_SYSINFO_EHDR entry will point to the vDSO. | ||
14 | |||
15 | The vDSO uses symbol versioning; whenever you request a symbol from the | ||
16 | vDSO, specify the version you are expecting. | ||
17 | |||
18 | Programs that dynamically link to glibc will use the vDSO automatically. | ||
19 | Otherwise, you can use the reference parser in Documentation/vDSO/parse_vdso.c. | ||
20 | |||
21 | Unless otherwise noted, the set of symbols with any given version and the | ||
22 | ABI of those symbols is considered stable. It may vary across architectures, | ||
23 | though. | ||
24 | |||
25 | (As of this writing, this ABI documentation as been confirmed for x86_64. | ||
26 | The maintainers of the other vDSO-using architectures should confirm | ||
27 | that it is correct for their architecture.) \ No newline at end of file | ||
diff --git a/Documentation/ABI/testing/pstore b/Documentation/ABI/testing/pstore index ddf451ee2a0..ff1df4e3b05 100644 --- a/Documentation/ABI/testing/pstore +++ b/Documentation/ABI/testing/pstore | |||
@@ -39,3 +39,9 @@ Description: Generic interface to platform dependent persistent storage. | |||
39 | multiple) files based on the record size of the underlying | 39 | multiple) files based on the record size of the underlying |
40 | persistent storage until at least this amount is reached. | 40 | persistent storage until at least this amount is reached. |
41 | Default is 10 Kbytes. | 41 | Default is 10 Kbytes. |
42 | |||
43 | Pstore only supports one backend at a time. If multiple | ||
44 | backends are available, the preferred backend may be | ||
45 | set by passing the pstore.backend= argument to the kernel at | ||
46 | boot time. | ||
47 | |||
diff --git a/Documentation/ABI/testing/sysfs-bus-i2c-devices-fsa9480 b/Documentation/ABI/testing/sysfs-bus-i2c-devices-fsa9480 new file mode 100644 index 00000000000..9de269bb0ae --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-i2c-devices-fsa9480 | |||
@@ -0,0 +1,21 @@ | |||
1 | What: /sys/bus/i2c/devices/.../device | ||
2 | Date: February 2011 | ||
3 | Contact: Minkyu Kang <mk7.kang@samsung.com> | ||
4 | Description: | ||
5 | show what device is attached | ||
6 | NONE - no device | ||
7 | USB - USB device is attached | ||
8 | UART - UART is attached | ||
9 | CHARGER - Charger is attaced | ||
10 | JIG - JIG is attached | ||
11 | |||
12 | What: /sys/bus/i2c/devices/.../switch | ||
13 | Date: February 2011 | ||
14 | Contact: Minkyu Kang <mk7.kang@samsung.com> | ||
15 | Description: | ||
16 | show or set the state of manual switch | ||
17 | VAUDIO - switch to VAUDIO path | ||
18 | UART - switch to UART path | ||
19 | AUDIO - switch to AUDIO path | ||
20 | DHOST - switch to DHOST path | ||
21 | AUTO - switch automatically by device | ||
diff --git a/Documentation/ABI/testing/sysfs-class-scsi_host b/Documentation/ABI/testing/sysfs-class-scsi_host new file mode 100644 index 00000000000..29a4f892e43 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-scsi_host | |||
@@ -0,0 +1,13 @@ | |||
1 | What: /sys/class/scsi_host/hostX/isci_id | ||
2 | Date: June 2011 | ||
3 | Contact: Dave Jiang <dave.jiang@intel.com> | ||
4 | Description: | ||
5 | This file contains the enumerated host ID for the Intel | ||
6 | SCU controller. The Intel(R) C600 Series Chipset SATA/SAS | ||
7 | Storage Control Unit embeds up to two 4-port controllers in | ||
8 | a single PCI device. The controllers are enumerated in order | ||
9 | which usually means the lowest number scsi_host corresponds | ||
10 | with the first controller, but this association is not | ||
11 | guaranteed. The 'isci_id' attribute unambiguously identifies | ||
12 | the controller index: '0' for the first controller, | ||
13 | '1' for the second. | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus b/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus index c1b53b8bc2a..65e6e5dd67e 100644 --- a/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus +++ b/Documentation/ABI/testing/sysfs-driver-hid-roccat-koneplus | |||
@@ -92,6 +92,14 @@ Description: The mouse has a tracking- and a distance-control-unit. These | |||
92 | This file is writeonly. | 92 | This file is writeonly. |
93 | Users: http://roccat.sourceforge.net | 93 | Users: http://roccat.sourceforge.net |
94 | 94 | ||
95 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/talk | ||
96 | Date: May 2011 | ||
97 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | ||
98 | Description: Used to active some easy* functions of the mouse from outside. | ||
99 | The data has to be 16 bytes long. | ||
100 | This file is writeonly. | ||
101 | Users: http://roccat.sourceforge.net | ||
102 | |||
95 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu | 103 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/koneplus/roccatkoneplus<minor>/tcu |
96 | Date: October 2010 | 104 | Date: October 2010 |
97 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> | 105 | Contact: Stefan Achatz <erazor_de@users.sourceforge.net> |
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-wiimote b/Documentation/ABI/testing/sysfs-driver-hid-wiimote new file mode 100644 index 00000000000..5d5a16ea57c --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-hid-wiimote | |||
@@ -0,0 +1,10 @@ | |||
1 | What: /sys/bus/hid/drivers/wiimote/<dev>/led1 | ||
2 | What: /sys/bus/hid/drivers/wiimote/<dev>/led2 | ||
3 | What: /sys/bus/hid/drivers/wiimote/<dev>/led3 | ||
4 | What: /sys/bus/hid/drivers/wiimote/<dev>/led4 | ||
5 | Date: July 2011 | ||
6 | KernelVersion: 3.1 | ||
7 | Contact: David Herrmann <dh.herrmann@googlemail.com> | ||
8 | Description: Make it possible to set/get current led state. Reading from it | ||
9 | returns 0 if led is off and 1 if it is on. Writing 0 to it | ||
10 | disables the led, writing 1 enables it. | ||
diff --git a/Documentation/ABI/testing/sysfs-module b/Documentation/ABI/testing/sysfs-module index cfcec3bffc0..9489ea8e294 100644 --- a/Documentation/ABI/testing/sysfs-module +++ b/Documentation/ABI/testing/sysfs-module | |||
@@ -10,3 +10,26 @@ KernelVersion: 2.6.35 | |||
10 | Contact: masa-korg@dsn.okisemi.com | 10 | Contact: masa-korg@dsn.okisemi.com |
11 | Description: Write/read Option ROM data. | 11 | Description: Write/read Option ROM data. |
12 | 12 | ||
13 | |||
14 | What: /sys/module/ehci_hcd/drivers/.../uframe_periodic_max | ||
15 | Date: July 2011 | ||
16 | KernelVersion: 3.1 | ||
17 | Contact: Kirill Smelkov <kirr@mns.spb.ru> | ||
18 | Description: Maximum time allowed for periodic transfers per microframe (μs) | ||
19 | |||
20 | [ USB 2.0 sets maximum allowed time for periodic transfers per | ||
21 | microframe to be 80%, that is 100 microseconds out of 125 | ||
22 | microseconds (full microframe). | ||
23 | |||
24 | However there are cases, when 80% max isochronous bandwidth is | ||
25 | too limiting. For example two video streams could require 110 | ||
26 | microseconds of isochronous bandwidth per microframe to work | ||
27 | together. ] | ||
28 | |||
29 | Through this setting it is possible to raise the limit so that | ||
30 | the host controller would allow allocating more than 100 | ||
31 | microseconds of periodic bandwidth per microframe. | ||
32 | |||
33 | Beware, non-standard modes are usually not thoroughly tested by | ||
34 | hardware designers, and the hardware can malfunction when this | ||
35 | setting differ from default 100. | ||
diff --git a/Documentation/ABI/testing/sysfs-platform-ideapad-laptop b/Documentation/ABI/testing/sysfs-platform-ideapad-laptop index 807fca2ae2a..ff53183c384 100644 --- a/Documentation/ABI/testing/sysfs-platform-ideapad-laptop +++ b/Documentation/ABI/testing/sysfs-platform-ideapad-laptop | |||
@@ -4,3 +4,20 @@ KernelVersion: 2.6.37 | |||
4 | Contact: "Ike Panhc <ike.pan@canonical.com>" | 4 | Contact: "Ike Panhc <ike.pan@canonical.com>" |
5 | Description: | 5 | Description: |
6 | Control the power of camera module. 1 means on, 0 means off. | 6 | Control the power of camera module. 1 means on, 0 means off. |
7 | |||
8 | What: /sys/devices/platform/ideapad/cfg | ||
9 | Date: Jun 2011 | ||
10 | KernelVersion: 3.1 | ||
11 | Contact: "Ike Panhc <ike.pan@canonical.com>" | ||
12 | Description: | ||
13 | Ideapad capability bits. | ||
14 | Bit 8-10: 1 - Intel graphic only | ||
15 | 2 - ATI graphic only | ||
16 | 3 - Nvidia graphic only | ||
17 | 4 - Intel and ATI graphic | ||
18 | 5 - Intel and Nvidia graphic | ||
19 | Bit 16: Bluetooth exist (1 for exist) | ||
20 | Bit 17: 3G exist (1 for exist) | ||
21 | Bit 18: Wifi exist (1 for exist) | ||
22 | Bit 19: Camera exist (1 for exist) | ||
23 | |||