aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
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 */