aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-06-09 13:32:39 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-06-09 13:32:39 -0400
commiteafdca4d7010a0e019aaaace3dd71b432a69b54c (patch)
tree0206168276ece10426dbbef7b3de7e8d84c8674d /include
parent7d3bf613e99abbd96ac7b90ee3694a246c975021 (diff)
parent7a2e838d28cff6718a0bdf66164465402f8e40ed (diff)
Merge tag 'staging-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging/IIO updates from Greg KH: "Here is the big staging and IIO driver update for 4.18-rc1. It was delayed as I wanted to make sure the final driver deletions did not cause any major merge issues, and all now looks good. There are a lot of patches here, just over 1000. The diffstat summary shows the major changes here: 1007 files changed, 16828 insertions(+), 227770 deletions(-) Because of this, we might be close to shrinking the overall kernel source code size for two releases in a row. There was loads of work in this release cycle, primarily: - tons of ks7010 driver cleanups - lots of mt7621 driver fixes and cleanups - most driver cleanups - wilc1000 fixes and cleanups - lots and lots of IIO driver cleanups and new additions - debugfs cleanups for all staging drivers - lots of other staging driver cleanups and fixes, the shortlog has the full details. but the big user-visable things here are the removal of 3 chunks of code: - ncpfs and ipx were removed on schedule, no one has cared about this code since it moved to staging last year, and if it needs to come back, it can be reverted. - lustre file system is removed. I've ranted at the lustre developers about once a year for the past 5 years, with no real forward progress at all to clean things up and get the code into the "real" part of the kernel. Given that the lustre developers continue to work on an external tree and try to port those changes to the in-kernel tree every once in a while, this whole thing really really is not working out at all. So I'm deleting it so that the developers can spend the time working in their out-of-tree location and get things cleaned up properly to get merged into the tree correctly at a later date. Because of these file removals, you will have merge issues on some of these files (2 in the ipx code, 1 in the ncpfs code, and 1 in the atomisp driver). Just delete those files, it's a simple merge :) All of this has been in linux-next for a while with no reported problems" * tag 'staging-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (1011 commits) staging: ipx: delete it from the tree ncpfs: remove uapi .h files ncpfs: remove Documentation ncpfs: remove compat functionality staging: ncpfs: delete it staging: lustre: delete the filesystem from the tree. staging: vc04_services: no need to save the log debufs dentries staging: vc04_services: vchiq_debugfs_log_entry can be a void * staging: vc04_services: remove struct vchiq_debugfs_info staging: vc04_services: move client dbg directory into static variable staging: vc04_services: remove odd vchiq_debugfs_top() wrapper staging: vc04_services: no need to check debugfs return values staging: mt7621-gpio: reorder includes alphabetically staging: mt7621-gpio: change gc_map to don't use pointers staging: mt7621-gpio: use GPIOF_DIR_OUT and GPIOF_DIR_IN macros instead of custom values staging: mt7621-gpio: change 'to_mediatek_gpio' to make just a one line return staging: mt7621-gpio: dt-bindings: update documentation for #interrupt-cells property staging: mt7621-gpio: update #interrupt-cells for the gpio node staging: mt7621-gpio: dt-bindings: complete documentation for the gpio staging: mt7621-dts: add missing properties to gpio node ...
Diffstat (limited to 'include')
-rw-r--r--include/linux/iio/adc/ad_sigma_delta.h24
-rw-r--r--include/linux/iio/adc/stm32-dfsdm-adc.h2
-rw-r--r--include/linux/iio/common/cros_ec_sensors_core.h180
-rw-r--r--include/linux/iio/iio.h24
-rw-r--r--include/linux/kernel.h16
-rw-r--r--include/linux/platform_data/tsl2772.h101
-rw-r--r--include/uapi/linux/ncp.h202
-rw-r--r--include/uapi/linux/ncp_fs.h147
-rw-r--r--include/uapi/linux/ncp_mount.h72
-rw-r--r--include/uapi/linux/ncp_no.h20
10 files changed, 328 insertions, 460 deletions
diff --git a/include/linux/iio/adc/ad_sigma_delta.h b/include/linux/iio/adc/ad_sigma_delta.h
index 1fc7abd28b0b..730ead1a46df 100644
--- a/include/linux/iio/adc/ad_sigma_delta.h
+++ b/include/linux/iio/adc/ad_sigma_delta.h
@@ -127,7 +127,7 @@ void ad_sd_cleanup_buffer_and_trigger(struct iio_dev *indio_dev);
127int ad_sd_validate_trigger(struct iio_dev *indio_dev, struct iio_trigger *trig); 127int ad_sd_validate_trigger(struct iio_dev *indio_dev, struct iio_trigger *trig);
128 128
129#define __AD_SD_CHANNEL(_si, _channel1, _channel2, _address, _bits, \ 129#define __AD_SD_CHANNEL(_si, _channel1, _channel2, _address, _bits, \
130 _storagebits, _shift, _extend_name, _type) \ 130 _storagebits, _shift, _extend_name, _type, _mask_all) \
131 { \ 131 { \
132 .type = (_type), \ 132 .type = (_type), \
133 .differential = (_channel2 == -1 ? 0 : 1), \ 133 .differential = (_channel2 == -1 ? 0 : 1), \
@@ -139,7 +139,7 @@ int ad_sd_validate_trigger(struct iio_dev *indio_dev, struct iio_trigger *trig);
139 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ 139 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \
140 BIT(IIO_CHAN_INFO_OFFSET), \ 140 BIT(IIO_CHAN_INFO_OFFSET), \
141 .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \ 141 .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
142 .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_SAMP_FREQ), \ 142 .info_mask_shared_by_all = _mask_all, \
143 .scan_index = (_si), \ 143 .scan_index = (_si), \
144 .scan_type = { \ 144 .scan_type = { \
145 .sign = 'u', \ 145 .sign = 'u', \
@@ -153,25 +153,35 @@ int ad_sd_validate_trigger(struct iio_dev *indio_dev, struct iio_trigger *trig);
153#define AD_SD_DIFF_CHANNEL(_si, _channel1, _channel2, _address, _bits, \ 153#define AD_SD_DIFF_CHANNEL(_si, _channel1, _channel2, _address, _bits, \
154 _storagebits, _shift) \ 154 _storagebits, _shift) \
155 __AD_SD_CHANNEL(_si, _channel1, _channel2, _address, _bits, \ 155 __AD_SD_CHANNEL(_si, _channel1, _channel2, _address, _bits, \
156 _storagebits, _shift, NULL, IIO_VOLTAGE) 156 _storagebits, _shift, NULL, IIO_VOLTAGE, \
157 BIT(IIO_CHAN_INFO_SAMP_FREQ))
157 158
158#define AD_SD_SHORTED_CHANNEL(_si, _channel, _address, _bits, \ 159#define AD_SD_SHORTED_CHANNEL(_si, _channel, _address, _bits, \
159 _storagebits, _shift) \ 160 _storagebits, _shift) \
160 __AD_SD_CHANNEL(_si, _channel, _channel, _address, _bits, \ 161 __AD_SD_CHANNEL(_si, _channel, _channel, _address, _bits, \
161 _storagebits, _shift, "shorted", IIO_VOLTAGE) 162 _storagebits, _shift, "shorted", IIO_VOLTAGE, \
163 BIT(IIO_CHAN_INFO_SAMP_FREQ))
162 164
163#define AD_SD_CHANNEL(_si, _channel, _address, _bits, \ 165#define AD_SD_CHANNEL(_si, _channel, _address, _bits, \
164 _storagebits, _shift) \ 166 _storagebits, _shift) \
165 __AD_SD_CHANNEL(_si, _channel, -1, _address, _bits, \ 167 __AD_SD_CHANNEL(_si, _channel, -1, _address, _bits, \
166 _storagebits, _shift, NULL, IIO_VOLTAGE) 168 _storagebits, _shift, NULL, IIO_VOLTAGE, \
169 BIT(IIO_CHAN_INFO_SAMP_FREQ))
170
171#define AD_SD_CHANNEL_NO_SAMP_FREQ(_si, _channel, _address, _bits, \
172 _storagebits, _shift) \
173 __AD_SD_CHANNEL(_si, _channel, -1, _address, _bits, \
174 _storagebits, _shift, NULL, IIO_VOLTAGE, 0)
167 175
168#define AD_SD_TEMP_CHANNEL(_si, _address, _bits, _storagebits, _shift) \ 176#define AD_SD_TEMP_CHANNEL(_si, _address, _bits, _storagebits, _shift) \
169 __AD_SD_CHANNEL(_si, 0, -1, _address, _bits, \ 177 __AD_SD_CHANNEL(_si, 0, -1, _address, _bits, \
170 _storagebits, _shift, NULL, IIO_TEMP) 178 _storagebits, _shift, NULL, IIO_TEMP, \
179 BIT(IIO_CHAN_INFO_SAMP_FREQ))
171 180
172#define AD_SD_SUPPLY_CHANNEL(_si, _channel, _address, _bits, _storagebits, \ 181#define AD_SD_SUPPLY_CHANNEL(_si, _channel, _address, _bits, _storagebits, \
173 _shift) \ 182 _shift) \
174 __AD_SD_CHANNEL(_si, _channel, -1, _address, _bits, \ 183 __AD_SD_CHANNEL(_si, _channel, -1, _address, _bits, \
175 _storagebits, _shift, "supply", IIO_VOLTAGE) 184 _storagebits, _shift, "supply", IIO_VOLTAGE, \
185 BIT(IIO_CHAN_INFO_SAMP_FREQ))
176 186
177#endif 187#endif
diff --git a/include/linux/iio/adc/stm32-dfsdm-adc.h b/include/linux/iio/adc/stm32-dfsdm-adc.h
index e7dc7a542a4e..0da298b41737 100644
--- a/include/linux/iio/adc/stm32-dfsdm-adc.h
+++ b/include/linux/iio/adc/stm32-dfsdm-adc.h
@@ -9,6 +9,8 @@
9#ifndef STM32_DFSDM_ADC_H 9#ifndef STM32_DFSDM_ADC_H
10#define STM32_DFSDM_ADC_H 10#define STM32_DFSDM_ADC_H
11 11
12#include <linux/iio/iio.h>
13
12int stm32_dfsdm_get_buff_cb(struct iio_dev *iio_dev, 14int stm32_dfsdm_get_buff_cb(struct iio_dev *iio_dev,
13 int (*cb)(const void *data, size_t size, 15 int (*cb)(const void *data, size_t size,
14 void *private), 16 void *private),
diff --git a/include/linux/iio/common/cros_ec_sensors_core.h b/include/linux/iio/common/cros_ec_sensors_core.h
new file mode 100644
index 000000000000..ce16445411ac
--- /dev/null
+++ b/include/linux/iio/common/cros_ec_sensors_core.h
@@ -0,0 +1,180 @@
1/*
2 * ChromeOS EC sensor hub
3 *
4 * Copyright (C) 2016 Google, Inc
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#ifndef __CROS_EC_SENSORS_CORE_H
17#define __CROS_EC_SENSORS_CORE_H
18
19#include <linux/iio/iio.h>
20#include <linux/irqreturn.h>
21#include <linux/mfd/cros_ec.h>
22
23enum {
24 CROS_EC_SENSOR_X,
25 CROS_EC_SENSOR_Y,
26 CROS_EC_SENSOR_Z,
27 CROS_EC_SENSOR_MAX_AXIS,
28};
29
30/* EC returns sensor values using signed 16 bit registers */
31#define CROS_EC_SENSOR_BITS 16
32
33/*
34 * 4 16 bit channels are allowed.
35 * Good enough for current sensors, they use up to 3 16 bit vectors.
36 */
37#define CROS_EC_SAMPLE_SIZE (sizeof(s64) * 2)
38
39/* Minimum sampling period to use when device is suspending */
40#define CROS_EC_MIN_SUSPEND_SAMPLING_FREQUENCY 1000 /* 1 second */
41
42/**
43 * struct cros_ec_sensors_core_state - state data for EC sensors IIO driver
44 * @ec: cros EC device structure
45 * @cmd_lock: lock used to prevent simultaneous access to the
46 * commands.
47 * @msg: cros EC command structure
48 * @param: motion sensor parameters structure
49 * @resp: motion sensor response structure
50 * @type: type of motion sensor
51 * @loc: location where the motion sensor is placed
52 * @calib: calibration parameters. Note that trigger
53 * captured data will always provide the calibrated
54 * data
55 * @samples: static array to hold data from a single capture.
56 * For each channel we need 2 bytes, except for
57 * the timestamp. The timestamp is always last and
58 * is always 8-byte aligned.
59 * @read_ec_sensors_data: function used for accessing sensors values
60 * @cuur_sampl_freq: current sampling period
61 */
62struct cros_ec_sensors_core_state {
63 struct cros_ec_device *ec;
64 struct mutex cmd_lock;
65
66 struct cros_ec_command *msg;
67 struct ec_params_motion_sense param;
68 struct ec_response_motion_sense *resp;
69
70 enum motionsensor_type type;
71 enum motionsensor_location loc;
72
73 s16 calib[CROS_EC_SENSOR_MAX_AXIS];
74
75 u8 samples[CROS_EC_SAMPLE_SIZE];
76
77 int (*read_ec_sensors_data)(struct iio_dev *indio_dev,
78 unsigned long scan_mask, s16 *data);
79
80 int curr_sampl_freq;
81};
82
83/**
84 * cros_ec_sensors_read_lpc() - retrieve data from EC shared memory
85 * @indio_dev: pointer to IIO device
86 * @scan_mask: bitmap of the sensor indices to scan
87 * @data: location to store data
88 *
89 * This is the safe function for reading the EC data. It guarantees that the
90 * data sampled was not modified by the EC while being read.
91 *
92 * Return: 0 on success, -errno on failure.
93 */
94int cros_ec_sensors_read_lpc(struct iio_dev *indio_dev, unsigned long scan_mask,
95 s16 *data);
96
97/**
98 * cros_ec_sensors_read_cmd() - retrieve data using the EC command protocol
99 * @indio_dev: pointer to IIO device
100 * @scan_mask: bitmap of the sensor indices to scan
101 * @data: location to store data
102 *
103 * Return: 0 on success, -errno on failure.
104 */
105int cros_ec_sensors_read_cmd(struct iio_dev *indio_dev, unsigned long scan_mask,
106 s16 *data);
107
108struct platform_device;
109/**
110 * cros_ec_sensors_core_init() - basic initialization of the core structure
111 * @pdev: platform device created for the sensors
112 * @indio_dev: iio device structure of the device
113 * @physical_device: true if the device refers to a physical device
114 *
115 * Return: 0 on success, -errno on failure.
116 */
117int cros_ec_sensors_core_init(struct platform_device *pdev,
118 struct iio_dev *indio_dev, bool physical_device);
119
120/**
121 * cros_ec_sensors_capture() - the trigger handler function
122 * @irq: the interrupt number.
123 * @p: a pointer to the poll function.
124 *
125 * On a trigger event occurring, if the pollfunc is attached then this
126 * handler is called as a threaded interrupt (and hence may sleep). It
127 * is responsible for grabbing data from the device and pushing it into
128 * the associated buffer.
129 *
130 * Return: IRQ_HANDLED
131 */
132irqreturn_t cros_ec_sensors_capture(int irq, void *p);
133
134/**
135 * cros_ec_motion_send_host_cmd() - send motion sense host command
136 * @st: pointer to state information for device
137 * @opt_length: optional length to reduce the response size, useful on the data
138 * path. Otherwise, the maximal allowed response size is used
139 *
140 * When called, the sub-command is assumed to be set in param->cmd.
141 *
142 * Return: 0 on success, -errno on failure.
143 */
144int cros_ec_motion_send_host_cmd(struct cros_ec_sensors_core_state *st,
145 u16 opt_length);
146
147/**
148 * cros_ec_sensors_core_read() - function to request a value from the sensor
149 * @st: pointer to state information for device
150 * @chan: channel specification structure table
151 * @val: will contain one element making up the returned value
152 * @val2: will contain another element making up the returned value
153 * @mask: specifies which values to be requested
154 *
155 * Return: the type of value returned by the device
156 */
157int cros_ec_sensors_core_read(struct cros_ec_sensors_core_state *st,
158 struct iio_chan_spec const *chan,
159 int *val, int *val2, long mask);
160
161/**
162 * cros_ec_sensors_core_write() - function to write a value to the sensor
163 * @st: pointer to state information for device
164 * @chan: channel specification structure table
165 * @val: first part of value to write
166 * @val2: second part of value to write
167 * @mask: specifies which values to write
168 *
169 * Return: the type of value returned by the device
170 */
171int cros_ec_sensors_core_write(struct cros_ec_sensors_core_state *st,
172 struct iio_chan_spec const *chan,
173 int val, int val2, long mask);
174
175extern const struct dev_pm_ops cros_ec_sensors_pm_ops;
176
177/* List of extended channel specification for all sensors */
178extern const struct iio_chan_spec_ext_info cros_ec_sensors_ext_info[];
179
180#endif /* __CROS_EC_SENSORS_CORE_H */
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index 11579fd4126e..a74cb177dc6f 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -183,18 +183,18 @@ struct iio_event_spec {
183 * @address: Driver specific identifier. 183 * @address: Driver specific identifier.
184 * @scan_index: Monotonic index to give ordering in scans when read 184 * @scan_index: Monotonic index to give ordering in scans when read
185 * from a buffer. 185 * from a buffer.
186 * @scan_type: sign: 's' or 'u' to specify signed or unsigned 186 * @scan_type: struct describing the scan type
187 * realbits: Number of valid bits of data 187 * @scan_type.sign: 's' or 'u' to specify signed or unsigned
188 * storagebits: Realbits + padding 188 * @scan_type.realbits: Number of valid bits of data
189 * shift: Shift right by this before masking out 189 * @scan_type.storagebits: Realbits + padding
190 * realbits. 190 * @scan_type.shift: Shift right by this before masking out
191 * repeat: Number of times real/storage bits 191 * realbits.
192 * repeats. When the repeat element is 192 * @scan_type.repeat: Number of times real/storage bits repeats.
193 * more than 1, then the type element in 193 * When the repeat element is more than 1, then
194 * sysfs will show a repeat value. 194 * the type element in sysfs will show a repeat
195 * Otherwise, the number of repetitions is 195 * value. Otherwise, the number of repetitions
196 * omitted. 196 * is omitted.
197 * endianness: little or big endian 197 * @scan_type.endianness: little or big endian
198 * @info_mask_separate: What information is to be exported that is specific to 198 * @info_mask_separate: What information is to be exported that is specific to
199 * this channel. 199 * this channel.
200 * @info_mask_separate_available: What availability information is to be 200 * @info_mask_separate_available: What availability information is to be
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 7c4e8f1f72d8..d23123238534 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -966,6 +966,22 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
966 "pointer type mismatch in container_of()"); \ 966 "pointer type mismatch in container_of()"); \
967 ((type *)(__mptr - offsetof(type, member))); }) 967 ((type *)(__mptr - offsetof(type, member))); })
968 968
969/**
970 * container_of_safe - cast a member of a structure out to the containing structure
971 * @ptr: the pointer to the member.
972 * @type: the type of the container struct this is embedded in.
973 * @member: the name of the member within the struct.
974 *
975 * If IS_ERR_OR_NULL(ptr), ptr is returned unchanged.
976 */
977#define container_of_safe(ptr, type, member) ({ \
978 void *__mptr = (void *)(ptr); \
979 BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
980 !__same_type(*(ptr), void), \
981 "pointer type mismatch in container_of()"); \
982 IS_ERR_OR_NULL(__mptr) ? ERR_CAST(__mptr) : \
983 ((type *)(__mptr - offsetof(type, member))); })
984
969/* Rebuild everything on CONFIG_FTRACE_MCOUNT_RECORD */ 985/* Rebuild everything on CONFIG_FTRACE_MCOUNT_RECORD */
970#ifdef CONFIG_FTRACE_MCOUNT_RECORD 986#ifdef CONFIG_FTRACE_MCOUNT_RECORD
971# define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD 987# define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD
diff --git a/include/linux/platform_data/tsl2772.h b/include/linux/platform_data/tsl2772.h
new file mode 100644
index 000000000000..f8ade15a35e2
--- /dev/null
+++ b/include/linux/platform_data/tsl2772.h
@@ -0,0 +1,101 @@
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Device driver for monitoring ambient light intensity (lux)
4 * and proximity (prox) within the TAOS TSL2772 family of devices.
5 *
6 * Copyright (c) 2012, TAOS Corporation.
7 * Copyright (c) 2017-2018 Brian Masney <masneyb@onstation.org>
8 */
9
10#ifndef __TSL2772_H
11#define __TSL2772_H
12
13struct tsl2772_lux {
14 unsigned int ch0;
15 unsigned int ch1;
16};
17
18/* Max number of segments allowable in LUX table */
19#define TSL2772_MAX_LUX_TABLE_SIZE 6
20/* The default LUX tables all have 3 elements. */
21#define TSL2772_DEF_LUX_TABLE_SZ 3
22#define TSL2772_DEFAULT_TABLE_BYTES (sizeof(struct tsl2772_lux) * \
23 TSL2772_DEF_LUX_TABLE_SZ)
24
25/* Proximity diode to use */
26#define TSL2772_DIODE0 0x01
27#define TSL2772_DIODE1 0x02
28#define TSL2772_DIODE_BOTH 0x03
29
30/* LED Power */
31#define TSL2772_100_mA 0x00
32#define TSL2772_50_mA 0x01
33#define TSL2772_25_mA 0x02
34#define TSL2772_13_mA 0x03
35
36/**
37 * struct tsl2772_settings - Settings for the tsl2772 driver
38 * @als_time: Integration time of the ALS channel ADCs in 2.73 ms
39 * increments. Total integration time is
40 * (256 - als_time) * 2.73.
41 * @als_gain: Index into the tsl2772_als_gain array.
42 * @als_gain_trim: Default gain trim to account for aperture effects.
43 * @wait_time: Time between proximity and ALS cycles in 2.73
44 * periods.
45 * @prox_time: Integration time of the proximity ADC in 2.73 ms
46 * increments. Total integration time is
47 * (256 - prx_time) * 2.73.
48 * @prox_gain: Index into the tsl2772_prx_gain array.
49 * @als_prox_config: The value of the ALS / Proximity configuration
50 * register.
51 * @als_cal_target: Known external ALS reading for calibration.
52 * @als_persistence: H/W Filters, Number of 'out of limits' ALS readings.
53 * @als_interrupt_en: Enable/Disable ALS interrupts
54 * @als_thresh_low: CH0 'low' count to trigger interrupt.
55 * @als_thresh_high: CH0 'high' count to trigger interrupt.
56 * @prox_persistence: H/W Filters, Number of 'out of limits' proximity
57 * readings.
58 * @prox_interrupt_en: Enable/Disable proximity interrupts.
59 * @prox_thres_low: Low threshold proximity detection.
60 * @prox_thres_high: High threshold proximity detection.
61 * @prox_pulse_count: Number if proximity emitter pulses.
62 * @prox_max_samples_cal: The number of samples that are taken when performing
63 * a proximity calibration.
64 * @prox_diode Which diode(s) to use for driving the external
65 * LED(s) for proximity sensing.
66 * @prox_power The amount of power to use for the external LED(s).
67 */
68struct tsl2772_settings {
69 int als_time;
70 int als_gain;
71 int als_gain_trim;
72 int wait_time;
73 int prox_time;
74 int prox_gain;
75 int als_prox_config;
76 int als_cal_target;
77 u8 als_persistence;
78 bool als_interrupt_en;
79 int als_thresh_low;
80 int als_thresh_high;
81 u8 prox_persistence;
82 bool prox_interrupt_en;
83 int prox_thres_low;
84 int prox_thres_high;
85 int prox_pulse_count;
86 int prox_max_samples_cal;
87 int prox_diode;
88 int prox_power;
89};
90
91/**
92 * struct tsl2772_platform_data - Platform callback, glass and defaults
93 * @platform_lux_table: Device specific glass coefficents
94 * @platform_default_settings: Device specific power on defaults
95 */
96struct tsl2772_platform_data {
97 struct tsl2772_lux platform_lux_table[TSL2772_MAX_LUX_TABLE_SIZE];
98 struct tsl2772_settings *platform_default_settings;
99};
100
101#endif /* __TSL2772_H */
diff --git a/include/uapi/linux/ncp.h b/include/uapi/linux/ncp.h
deleted file mode 100644
index ca6f3d42c88f..000000000000
--- a/include/uapi/linux/ncp.h
+++ /dev/null
@@ -1,202 +0,0 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * ncp.h
4 *
5 * Copyright (C) 1995 by Volker Lendecke
6 * Modified for sparc by J.F. Chadima
7 * Modified for __constant_ntoh by Frank A. Vorstenbosch
8 *
9 */
10
11#ifndef _LINUX_NCP_H
12#define _LINUX_NCP_H
13
14#include <linux/types.h>
15
16#define NCP_PTYPE (0x11)
17#define NCP_PORT (0x0451)
18
19#define NCP_ALLOC_SLOT_REQUEST (0x1111)
20#define NCP_REQUEST (0x2222)
21#define NCP_DEALLOC_SLOT_REQUEST (0x5555)
22
23struct ncp_request_header {
24 __u16 type;
25 __u8 sequence;
26 __u8 conn_low;
27 __u8 task;
28 __u8 conn_high;
29 __u8 function;
30 __u8 data[0];
31} __attribute__((packed));
32
33#define NCP_REPLY (0x3333)
34#define NCP_WATCHDOG (0x3E3E)
35#define NCP_POSITIVE_ACK (0x9999)
36
37struct ncp_reply_header {
38 __u16 type;
39 __u8 sequence;
40 __u8 conn_low;
41 __u8 task;
42 __u8 conn_high;
43 __u8 completion_code;
44 __u8 connection_state;
45 __u8 data[0];
46} __attribute__((packed));
47
48#define NCP_VOLNAME_LEN (16)
49#define NCP_NUMBER_OF_VOLUMES (256)
50struct ncp_volume_info {
51 __u32 total_blocks;
52 __u32 free_blocks;
53 __u32 purgeable_blocks;
54 __u32 not_yet_purgeable_blocks;
55 __u32 total_dir_entries;
56 __u32 available_dir_entries;
57 __u8 sectors_per_block;
58 char volume_name[NCP_VOLNAME_LEN + 1];
59};
60
61#define AR_READ (cpu_to_le16(1))
62#define AR_WRITE (cpu_to_le16(2))
63#define AR_EXCLUSIVE (cpu_to_le16(0x20))
64
65#define NCP_FILE_ID_LEN 6
66
67/* Defines for Name Spaces */
68#define NW_NS_DOS 0
69#define NW_NS_MAC 1
70#define NW_NS_NFS 2
71#define NW_NS_FTAM 3
72#define NW_NS_OS2 4
73
74/* Defines for ReturnInformationMask */
75#define RIM_NAME (cpu_to_le32(1))
76#define RIM_SPACE_ALLOCATED (cpu_to_le32(2))
77#define RIM_ATTRIBUTES (cpu_to_le32(4))
78#define RIM_DATA_SIZE (cpu_to_le32(8))
79#define RIM_TOTAL_SIZE (cpu_to_le32(0x10))
80#define RIM_EXT_ATTR_INFO (cpu_to_le32(0x20))
81#define RIM_ARCHIVE (cpu_to_le32(0x40))
82#define RIM_MODIFY (cpu_to_le32(0x80))
83#define RIM_CREATION (cpu_to_le32(0x100))
84#define RIM_OWNING_NAMESPACE (cpu_to_le32(0x200))
85#define RIM_DIRECTORY (cpu_to_le32(0x400))
86#define RIM_RIGHTS (cpu_to_le32(0x800))
87#define RIM_ALL (cpu_to_le32(0xFFF))
88#define RIM_COMPRESSED_INFO (cpu_to_le32(0x80000000))
89
90/* Defines for NSInfoBitMask */
91#define NSIBM_NFS_NAME 0x0001
92#define NSIBM_NFS_MODE 0x0002
93#define NSIBM_NFS_GID 0x0004
94#define NSIBM_NFS_NLINKS 0x0008
95#define NSIBM_NFS_RDEV 0x0010
96#define NSIBM_NFS_LINK 0x0020
97#define NSIBM_NFS_CREATED 0x0040
98#define NSIBM_NFS_UID 0x0080
99#define NSIBM_NFS_ACSFLAG 0x0100
100#define NSIBM_NFS_MYFLAG 0x0200
101
102/* open/create modes */
103#define OC_MODE_OPEN 0x01
104#define OC_MODE_TRUNCATE 0x02
105#define OC_MODE_REPLACE 0x02
106#define OC_MODE_CREATE 0x08
107
108/* open/create results */
109#define OC_ACTION_NONE 0x00
110#define OC_ACTION_OPEN 0x01
111#define OC_ACTION_CREATE 0x02
112#define OC_ACTION_TRUNCATE 0x04
113#define OC_ACTION_REPLACE 0x04
114
115/* access rights attributes */
116#ifndef AR_READ_ONLY
117#define AR_READ_ONLY 0x0001
118#define AR_WRITE_ONLY 0x0002
119#define AR_DENY_READ 0x0004
120#define AR_DENY_WRITE 0x0008
121#define AR_COMPATIBILITY 0x0010
122#define AR_WRITE_THROUGH 0x0040
123#define AR_OPEN_COMPRESSED 0x0100
124#endif
125
126struct nw_nfs_info {
127 __u32 mode;
128 __u32 rdev;
129};
130
131struct nw_info_struct {
132 __u32 spaceAlloc;
133 __le32 attributes;
134 __u16 flags;
135 __le32 dataStreamSize;
136 __le32 totalStreamSize;
137 __u16 numberOfStreams;
138 __le16 creationTime;
139 __le16 creationDate;
140 __u32 creatorID;
141 __le16 modifyTime;
142 __le16 modifyDate;
143 __u32 modifierID;
144 __le16 lastAccessDate;
145 __u16 archiveTime;
146 __u16 archiveDate;
147 __u32 archiverID;
148 __u16 inheritedRightsMask;
149 __le32 dirEntNum;
150 __le32 DosDirNum;
151 __u32 volNumber;
152 __u32 EADataSize;
153 __u32 EAKeyCount;
154 __u32 EAKeySize;
155 __u32 NSCreator;
156 __u8 nameLen;
157 __u8 entryName[256];
158 /* libncp may depend on there being nothing after entryName */
159#ifdef __KERNEL__
160 struct nw_nfs_info nfs;
161#endif
162} __attribute__((packed));
163
164/* modify mask - use with MODIFY_DOS_INFO structure */
165#define DM_ATTRIBUTES (cpu_to_le32(0x02))
166#define DM_CREATE_DATE (cpu_to_le32(0x04))
167#define DM_CREATE_TIME (cpu_to_le32(0x08))
168#define DM_CREATOR_ID (cpu_to_le32(0x10))
169#define DM_ARCHIVE_DATE (cpu_to_le32(0x20))
170#define DM_ARCHIVE_TIME (cpu_to_le32(0x40))
171#define DM_ARCHIVER_ID (cpu_to_le32(0x80))
172#define DM_MODIFY_DATE (cpu_to_le32(0x0100))
173#define DM_MODIFY_TIME (cpu_to_le32(0x0200))
174#define DM_MODIFIER_ID (cpu_to_le32(0x0400))
175#define DM_LAST_ACCESS_DATE (cpu_to_le32(0x0800))
176#define DM_INHERITED_RIGHTS_MASK (cpu_to_le32(0x1000))
177#define DM_MAXIMUM_SPACE (cpu_to_le32(0x2000))
178
179struct nw_modify_dos_info {
180 __le32 attributes;
181 __le16 creationDate;
182 __le16 creationTime;
183 __u32 creatorID;
184 __le16 modifyDate;
185 __le16 modifyTime;
186 __u32 modifierID;
187 __u16 archiveDate;
188 __u16 archiveTime;
189 __u32 archiverID;
190 __le16 lastAccessDate;
191 __u16 inheritanceGrantMask;
192 __u16 inheritanceRevokeMask;
193 __u32 maximumSpace;
194} __attribute__((packed));
195
196struct nw_search_sequence {
197 __u8 volNumber;
198 __u32 dirBase;
199 __u32 sequence;
200} __attribute__((packed));
201
202#endif /* _LINUX_NCP_H */
diff --git a/include/uapi/linux/ncp_fs.h b/include/uapi/linux/ncp_fs.h
deleted file mode 100644
index e76a44229d2f..000000000000
--- a/include/uapi/linux/ncp_fs.h
+++ /dev/null
@@ -1,147 +0,0 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * ncp_fs.h
4 *
5 * Copyright (C) 1995, 1996 by Volker Lendecke
6 *
7 */
8
9#ifndef _LINUX_NCP_FS_H
10#define _LINUX_NCP_FS_H
11
12#include <linux/fs.h>
13#include <linux/in.h>
14#include <linux/types.h>
15#include <linux/magic.h>
16
17#include <linux/ipx.h>
18#include <linux/ncp_no.h>
19
20/*
21 * ioctl commands
22 */
23
24struct ncp_ioctl_request {
25 unsigned int function;
26 unsigned int size;
27 char __user *data;
28};
29
30struct ncp_fs_info {
31 int version;
32 struct sockaddr_ipx addr;
33 __kernel_uid_t mounted_uid;
34 int connection; /* Connection number the server assigned us */
35 int buffer_size; /* The negotiated buffer size, to be
36 used for read/write requests! */
37
38 int volume_number;
39 __le32 directory_id;
40};
41
42struct ncp_fs_info_v2 {
43 int version;
44 unsigned long mounted_uid;
45 unsigned int connection;
46 unsigned int buffer_size;
47
48 unsigned int volume_number;
49 __le32 directory_id;
50
51 __u32 dummy1;
52 __u32 dummy2;
53 __u32 dummy3;
54};
55
56struct ncp_sign_init
57{
58 char sign_root[8];
59 char sign_last[16];
60};
61
62struct ncp_lock_ioctl
63{
64#define NCP_LOCK_LOG 0
65#define NCP_LOCK_SH 1
66#define NCP_LOCK_EX 2
67#define NCP_LOCK_CLEAR 256
68 int cmd;
69 int origin;
70 unsigned int offset;
71 unsigned int length;
72#define NCP_LOCK_DEFAULT_TIMEOUT 18
73#define NCP_LOCK_MAX_TIMEOUT 180
74 int timeout;
75};
76
77struct ncp_setroot_ioctl
78{
79 int volNumber;
80 int namespace;
81 __le32 dirEntNum;
82};
83
84struct ncp_objectname_ioctl
85{
86#define NCP_AUTH_NONE 0x00
87#define NCP_AUTH_BIND 0x31
88#define NCP_AUTH_NDS 0x32
89 int auth_type;
90 size_t object_name_len;
91 void __user * object_name; /* a userspace data, in most cases user name */
92};
93
94struct ncp_privatedata_ioctl
95{
96 size_t len;
97 void __user * data; /* ~1000 for NDS */
98};
99
100/* NLS charsets by ioctl */
101#define NCP_IOCSNAME_LEN 20
102struct ncp_nls_ioctl
103{
104 unsigned char codepage[NCP_IOCSNAME_LEN+1];
105 unsigned char iocharset[NCP_IOCSNAME_LEN+1];
106};
107
108#define NCP_IOC_NCPREQUEST _IOR('n', 1, struct ncp_ioctl_request)
109#define NCP_IOC_GETMOUNTUID _IOW('n', 2, __kernel_old_uid_t)
110#define NCP_IOC_GETMOUNTUID2 _IOW('n', 2, unsigned long)
111
112#define NCP_IOC_CONN_LOGGED_IN _IO('n', 3)
113
114#define NCP_GET_FS_INFO_VERSION (1)
115#define NCP_IOC_GET_FS_INFO _IOWR('n', 4, struct ncp_fs_info)
116#define NCP_GET_FS_INFO_VERSION_V2 (2)
117#define NCP_IOC_GET_FS_INFO_V2 _IOWR('n', 4, struct ncp_fs_info_v2)
118
119#define NCP_IOC_SIGN_INIT _IOR('n', 5, struct ncp_sign_init)
120#define NCP_IOC_SIGN_WANTED _IOR('n', 6, int)
121#define NCP_IOC_SET_SIGN_WANTED _IOW('n', 6, int)
122
123#define NCP_IOC_LOCKUNLOCK _IOR('n', 7, struct ncp_lock_ioctl)
124
125#define NCP_IOC_GETROOT _IOW('n', 8, struct ncp_setroot_ioctl)
126#define NCP_IOC_SETROOT _IOR('n', 8, struct ncp_setroot_ioctl)
127
128#define NCP_IOC_GETOBJECTNAME _IOWR('n', 9, struct ncp_objectname_ioctl)
129#define NCP_IOC_SETOBJECTNAME _IOR('n', 9, struct ncp_objectname_ioctl)
130#define NCP_IOC_GETPRIVATEDATA _IOWR('n', 10, struct ncp_privatedata_ioctl)
131#define NCP_IOC_SETPRIVATEDATA _IOR('n', 10, struct ncp_privatedata_ioctl)
132
133#define NCP_IOC_GETCHARSETS _IOWR('n', 11, struct ncp_nls_ioctl)
134#define NCP_IOC_SETCHARSETS _IOR('n', 11, struct ncp_nls_ioctl)
135
136#define NCP_IOC_GETDENTRYTTL _IOW('n', 12, __u32)
137#define NCP_IOC_SETDENTRYTTL _IOR('n', 12, __u32)
138
139/*
140 * The packet size to allocate. One page should be enough.
141 */
142#define NCP_PACKET_SIZE 4070
143
144#define NCP_MAXPATHLEN 255
145#define NCP_MAXNAMELEN 14
146
147#endif /* _LINUX_NCP_FS_H */
diff --git a/include/uapi/linux/ncp_mount.h b/include/uapi/linux/ncp_mount.h
deleted file mode 100644
index 9bdbcd68c329..000000000000
--- a/include/uapi/linux/ncp_mount.h
+++ /dev/null
@@ -1,72 +0,0 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * ncp_mount.h
4 *
5 * Copyright (C) 1995, 1996 by Volker Lendecke
6 *
7 */
8
9#ifndef _LINUX_NCP_MOUNT_H
10#define _LINUX_NCP_MOUNT_H
11
12#include <linux/types.h>
13#include <linux/ncp.h>
14
15#define NCP_MOUNT_VERSION 3 /* Binary */
16
17/* Values for flags */
18#define NCP_MOUNT_SOFT 0x0001
19#define NCP_MOUNT_INTR 0x0002
20#define NCP_MOUNT_STRONG 0x0004 /* enable delete/rename of r/o files */
21#define NCP_MOUNT_NO_OS2 0x0008 /* do not use OS/2 (LONG) namespace */
22#define NCP_MOUNT_NO_NFS 0x0010 /* do not use NFS namespace */
23#define NCP_MOUNT_EXTRAS 0x0020
24#define NCP_MOUNT_SYMLINKS 0x0040 /* enable symlinks */
25#define NCP_MOUNT_NFS_EXTRAS 0x0080 /* Enable use of NFS NS meta-info */
26
27struct ncp_mount_data {
28 int version;
29 unsigned int ncp_fd; /* The socket to the ncp port */
30 __kernel_uid_t mounted_uid; /* Who may umount() this filesystem? */
31 __kernel_pid_t wdog_pid; /* Who cares for our watchdog packets? */
32
33 unsigned char mounted_vol[NCP_VOLNAME_LEN + 1];
34 unsigned int time_out; /* How long should I wait after
35 sending a NCP request? */
36 unsigned int retry_count; /* And how often should I retry? */
37 unsigned int flags;
38
39 __kernel_uid_t uid;
40 __kernel_gid_t gid;
41 __kernel_mode_t file_mode;
42 __kernel_mode_t dir_mode;
43};
44
45#define NCP_MOUNT_VERSION_V4 (4) /* Binary or text */
46
47struct ncp_mount_data_v4 {
48 int version;
49 unsigned long flags; /* NCP_MOUNT_* flags */
50 /* MIPS uses long __kernel_uid_t, but... */
51 /* we neever pass -1, so it is safe */
52 unsigned long mounted_uid; /* Who may umount() this filesystem? */
53 /* MIPS uses long __kernel_pid_t */
54 long wdog_pid; /* Who cares for our watchdog packets? */
55
56 unsigned int ncp_fd; /* The socket to the ncp port */
57 unsigned int time_out; /* How long should I wait after
58 sending a NCP request? */
59 unsigned int retry_count; /* And how often should I retry? */
60
61 /* MIPS uses long __kernel_uid_t... */
62 /* we never pass -1, so it is safe */
63 unsigned long uid;
64 unsigned long gid;
65 /* MIPS uses unsigned long __kernel_mode_t */
66 unsigned long file_mode;
67 unsigned long dir_mode;
68};
69
70#define NCP_MOUNT_VERSION_V5 (5) /* Text only */
71
72#endif
diff --git a/include/uapi/linux/ncp_no.h b/include/uapi/linux/ncp_no.h
deleted file mode 100644
index 654d7c7f5d92..000000000000
--- a/include/uapi/linux/ncp_no.h
+++ /dev/null
@@ -1,20 +0,0 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef _NCP_NO
3#define _NCP_NO
4
5/* these define the attribute byte as seen by NCP */
6#define aRONLY (__cpu_to_le32(1))
7#define aHIDDEN (__cpu_to_le32(2))
8#define aSYSTEM (__cpu_to_le32(4))
9#define aEXECUTE (__cpu_to_le32(8))
10#define aDIR (__cpu_to_le32(0x10))
11#define aARCH (__cpu_to_le32(0x20))
12#define aSHARED (__cpu_to_le32(0x80))
13#define aDONTSUBALLOCATE (__cpu_to_le32(1L<<11))
14#define aTRANSACTIONAL (__cpu_to_le32(1L<<12))
15#define aPURGE (__cpu_to_le32(1L<<16))
16#define aRENAMEINHIBIT (__cpu_to_le32(1L<<17))
17#define aDELETEINHIBIT (__cpu_to_le32(1L<<18))
18#define aDONTCOMPRESS (__cpu_to_le32(1L<<27))
19
20#endif /* _NCP_NO */