1# Sierra Wireless HL7800 modem driver options
2
3# Copyright (c) 2020 Laird Connectivity
4# SPDX-License-Identifier: Apache-2.0
5
6menuconfig MODEM_HL7800
7	bool "Sierra Wireless HL7800 modem driver"
8	select MODEM_RECEIVER
9	select NET_OFFLOAD
10	imply GPIO
11	help
12	  Choose this setting to enable
13	  Sierra Wireless HL7800 LTE-M/NB-IoT modem driver.
14
15if MODEM_HL7800
16
17config MODEM_HL7800_FW_UPDATE
18	bool "Firmware update"
19	select FILE_SYSTEM
20	help
21	  Enable the ability to update the HL7800 via XMODEM
22	  by providing an update file to the update API.
23
24config MODEM_HL7800_RECV_BUF_CNT
25	int "The number of allocated network buffers"
26	default 30
27
28config MODEM_HL7800_RECV_BUF_SIZE
29	int "The size of the network buffers in bytes"
30	default 128
31
32config MODEM_HL7800_SET_APN_NAME_ON_STARTUP
33	bool "Set APN name during driver init"
34	help
35	  If APN doesn't match MODEM_HL7800_APN_NAME on startup,
36	  then it will be set.
37
38if MODEM_HL7800_SET_APN_NAME_ON_STARTUP
39
40config MODEM_HL7800_APN_NAME
41	string "APN name for establishing network connection"
42	help
43	  This setting is used in the AT+CGDCONT command to set the APN name
44	  for the PDP context.
45
46endif # MODEM_HL7800_SET_APN_NAME_ON_STARTUP
47
48choice MODEM_HL7800_RAT
49	bool "Radio Access Technology Mode"
50	default MODEM_HL7800_RAT_NO_CHANGE
51
52config MODEM_HL7800_RAT_NO_CHANGE
53	bool "Don't change the RAT"
54	help
55	  Leave the HL7800 RAT unchanged during modem init.
56
57config MODEM_HL7800_RAT_M1
58	bool "LTE-M1"
59	help
60	  Enable LTE Cat-M1 mode during modem init.
61
62config MODEM_HL7800_RAT_NB1
63	bool "NB-IoT"
64	help
65	  Enable LTE Cat-NB1 mode during modem init.
66
67endchoice
68
69menuconfig MODEM_HL7800_CONFIGURE_BANDS
70	bool "Configure modem bands"
71	default "y"
72	help
73	  Choose this setting to configure which LTE bands the
74	  HL7800 modem should use at boot time.
75
76if MODEM_HL7800_CONFIGURE_BANDS
77
78config MODEM_HL7800_BAND_1
79	bool "Band 1  (2000MHz)"
80	default "y"
81	help
82	  Enable Band 1 (2000MHz)
83
84config MODEM_HL7800_BAND_2
85	bool "Band 2  (1900MHz)"
86	default "y"
87	help
88	  Enable Band 2 (1900MHz)
89
90config MODEM_HL7800_BAND_3
91	bool "Band 3  (1800MHz)"
92	default "y"
93	help
94	  Enable Band 3 (1800MHz)
95
96config MODEM_HL7800_BAND_4
97	bool "Band 4  (1700MHz)"
98	default "y"
99	help
100	  Enable Band 4 (1700MHz)
101
102config MODEM_HL7800_BAND_5
103	bool "Band 5  (850MHz)"
104	default "y"
105	help
106	  Enable Band 5 (850MHz)
107
108config MODEM_HL7800_BAND_8
109	bool "Band 8  (900MHz)"
110	default "y"
111	help
112	  Enable Band 8 (900MHz)
113
114config MODEM_HL7800_BAND_9
115	bool "Band 9  (1900MHz)"
116	help
117	  Enable Band 9 (1900MHz)
118
119config MODEM_HL7800_BAND_10
120	bool "Band 10 (2100MHz)"
121	help
122	  Enable Band 10 (2100MHz)
123
124config MODEM_HL7800_BAND_12
125	bool "Band 12 (700MHz)"
126	default "y"
127	help
128	  Enable Band 12 (700MHz)
129
130config MODEM_HL7800_BAND_13
131	bool "Band 13 (700MHz)"
132	default "y"
133	help
134	  Enable Band 13 (700MHz)
135
136config MODEM_HL7800_BAND_14
137	bool "Band 14 (700MHz)"
138	help
139	  Enable Band 14 (700MHz)
140
141config MODEM_HL7800_BAND_17
142	bool "Band 17 (700MHz)"
143	help
144	  Enable Band 17 (700MHz)
145
146config MODEM_HL7800_BAND_18
147	bool "Band 18 (800MHz)"
148	help
149	  Enable Band 18 (800MHz)
150
151config MODEM_HL7800_BAND_19
152	bool "Band 19 (800MHz)"
153	help
154	  Enable Band 19 (800MHz)
155
156config MODEM_HL7800_BAND_20
157	bool "Band 20 (800MHz)"
158	default "y"
159	help
160	  Enable Band 20 (800MHz)
161
162config MODEM_HL7800_BAND_25
163	bool "Band 25 (1900MHz)"
164	help
165	  Enable Band 25 (1900MHz)
166
167config MODEM_HL7800_BAND_26
168	bool "Band 26 (800MHz)"
169	help
170	  Enable Band 26 (800MHz)
171
172config MODEM_HL7800_BAND_27
173	bool "Band 27 (800MHz)"
174	help
175	  Enable Band 27 (800MHz)
176
177config MODEM_HL7800_BAND_28
178	bool "Band 28 (700MHz)"
179	default "y"
180	help
181	  Enable Band 28 (700MHz)
182
183config MODEM_HL7800_BAND_66
184	bool "Band 66 (1800MHz)"
185	help
186	  Enable Band 66 (1800MHz)
187
188endif # MODEM_HL7800_CONFIGURE_BAND
189
190menuconfig MODEM_HL7800_LOW_POWER_MODE
191	bool "Low power modes"
192	help
193	  Choose this setting to enable a low power mode for the HL7800 modem
194
195if MODEM_HL7800_LOW_POWER_MODE
196
197choice
198	prompt "Low Power Mode"
199	default MODEM_HL7800_EDRX
200
201config MODEM_HL7800_EDRX
202	bool "eDRX"
203	help
204	  Enable LTE eDRX
205
206config MODEM_HL7800_PSM
207	bool "PSM"
208	help
209	  Enable Power Save Mode (PSM)
210endchoice
211
212if MODEM_HL7800_EDRX
213
214config MODEM_HL7800_EDRX_VALUE
215	string "Requested eDRX timer"
216	default "0101"
217	help
218	  Half a byte in a 4-bit format. The eDRX value refers to bit 4 to 1
219	  of octet 3 of the Extended DRX parameters information element.
220	  Default value is 81.92 seconds.
221
222endif # MODEM_HL7800_EDRX
223
224if MODEM_HL7800_PSM
225
226config MODEM_HL7800_PSM_PERIODIC_TAU
227	string "Requested extended periodic TAU timer"
228	default "10000010"
229	help
230	  Requested extended periodic TAU (tracking area update) value (T3412)
231	  to be allocated to the UE in E-UTRAN. One byte in an 8-bit format.
232	  Default value is 1 minute.
233
234config MODEM_HL7800_PSM_ACTIVE_TIME
235	string "Requested active time"
236	default "00001111"
237	help
238	  Requested Active Time value (T3324) to be allocated to the UE.
239	  One byte in an 8-bit format. Default value is 30 seconds.
240
241endif # MODEM_HL7800_PSM
242
243choice
244	prompt "Default Sleep Level"
245	default MODEM_HL7800_SLEEP_LEVEL_HIBERNATE
246	help
247	  The application can override this setting
248
249config MODEM_HL7800_SLEEP_LEVEL_HIBERNATE
250	bool "Hibernate"
251	help
252	  Lowest power consumption
253	  IO state not retained
254	  Application subsystem OFF
255
256config MODEM_HL7800_SLEEP_LEVEL_LITE_HIBERNATE
257	bool "Lite Hibernate"
258	help
259	  IO state retained
260	  Application subsystem OFF
261
262config MODEM_HL7800_SLEEP_LEVEL_SLEEP
263	bool "Sleep"
264	help
265	  Highest power consumption of modem sleep states
266	  IO state retained
267	  Application subsystem ON
268	  Allows sockets to remain open
269
270endchoice
271
272config MODEM_HL7800_SLEEP_DELAY_AFTER_REBOOT
273	int "Delay in seconds before sleep after reboot"
274	default 10
275
276endif # MODEM_HL7800_LOW_POWER_MODE
277
278config MODEM_HL7800_RX_STACK_SIZE
279	int "Size of the stack for the HL7800 modem driver RX thread"
280	default 1536 if MODEM_HL7800_POLTE
281	default 1280
282	help
283	  This stack is used by the HL7800 RX thread.
284
285config MODEM_HL7800_RX_WORKQ_STACK_SIZE
286	int "Size of the stack for the HL7800 modem driver work queue"
287	default 2048
288	help
289	  This stack is used by the work queue to pass off net_pkt data
290	  to the rest of the network stack, letting the rx thread continue
291	  processing data.
292
293config MODEM_HL7800_INIT_PRIORITY
294	int "HL7800 driver init priority"
295	default 80
296	help
297	  HL7800 device driver initialization priority.
298	  Do not mess with it unless you know what you are doing.
299	  Note that the priority needs to be lower than the net stack
300	  so that it can start before the networking sub-system.
301
302config MODEM_HL7800_GET_IP_ADDR_INFO_ATTEMPTS
303	int "Number of attempts to get IP address info during init"
304	default 4
305
306choice
307	prompt "Modem Boot Type"
308	default MODEM_HL7800_BOOT_NORMAL
309
310config MODEM_HL7800_BOOT_NORMAL
311	bool "No Delay"
312
313config MODEM_HL7800_BOOT_DELAY
314	bool "Delay secondary initialization of driver and network attach"
315	help
316	  When true the application must call mdm_hl7800_reset.
317	  This mode delays the validity of modem info.
318
319config MODEM_HL7800_BOOT_IN_AIRPLANE_MODE
320	bool "Enter airplane mode during init"
321	help
322	  mdm_hl7800_set_functionality must be used by app to exit
323	  airplane mode.
324
325endchoice
326
327config MODEM_HL7800_GPS
328	bool "GPS command and handlers"
329
330config MODEM_HL7800_USE_GLONASS
331	bool "Use GLONASS in addition to GPS"
332	depends on MODEM_HL7800_GPS
333
334config MODEM_HL7800_POLTE
335	bool "PoLTE commands and handlers"
336
337choice
338	prompt "IP Address family"
339	default MODEM_HL7800_ADDRESS_FAMILY_IPV4V6
340	help
341	  The address family for IP connections.
342
343config MODEM_HL7800_ADDRESS_FAMILY_IPV4
344	bool "IPv4"
345
346config MODEM_HL7800_ADDRESS_FAMILY_IPV6
347	bool "IPv6"
348
349config MODEM_HL7800_ADDRESS_FAMILY_IPV4V6
350	bool "IPv4v6"
351
352endchoice
353
354config MODEM_HL7800_ALLOW_SLEEP_DELAY_MS
355	int "Milliseconds to delay before allowing modem to sleep"
356	default 5000
357	range 5000 3600000
358	help
359	  This value should be set larger than the network latency. Otherwise
360	  the modem can go to sleep before having a chance to receive socket data.
361
362config MODEM_HL7800_RSSI_RATE_SECONDS
363	int "Rate to automatically query RSSI"
364	default 0 if MODEM_HL7800_LOW_POWER_MODE
365	default 30
366
367config MODEM_HL7800_CTS_FILTER_US
368	int "CTS signal filter time (microseconds)"
369	default 20
370	help
371	  This value is used to filter the CTS signal from the modem.
372	  CTS pulses shorter than this value will be ignored.
373
374endif # MODEM_HL7800
375