aboutsummaryrefslogtreecommitdiffstats
path: root/src/Kconfig
blob: 05b9cb427f7fd24520f67f116811c2c7b82e35f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
# Main Kconfig settings

mainmenu "Klipper Firmware Configuration"

config LOW_LEVEL_OPTIONS
    bool "Enable extra low-level configuration options"
    help
        Enable low-level configuration options that (if modified) may
        result in a build that does not function correctly.

choice
    prompt "Micro-controller Architecture"
    config MACH_AVR
        bool "Atmega AVR"
    config MACH_ATSAM
        bool "SAM3/SAM4/SAM E70"
    config MACH_ATSAMD
        bool "SAMC21/SAMD21/SAMD51/SAME5x"
    config MACH_LPC176X
        bool "LPC176x"
    config MACH_STM32
        bool "STMicroelectronics STM32"
    config MACH_HC32F460
        bool "Huada Semiconductor HC32F460"
    config MACH_RPXXXX
        bool "Raspberry Pi RP2040/RP235x"
    config MACH_PRU
        bool "Beaglebone PRU"
    config MACH_AR100
        bool "Allwinner A64 AR100"
    config MACH_LINUX
        bool "Linux process"
    config MACH_SIMU
        bool "Host simulator"
endchoice

source "src/avr/Kconfig"
source "src/atsam/Kconfig"
source "src/atsamd/Kconfig"
source "src/lpc176x/Kconfig"
source "src/stm32/Kconfig"
source "src/hc32f460/Kconfig"
source "src/rp2040/Kconfig"
source "src/pru/Kconfig"
source "src/ar100/Kconfig"
source "src/linux/Kconfig"
source "src/simulator/Kconfig"

# Generic configuration options for serial ports
config SERIAL
    bool
config SERIAL_BAUD
    depends on SERIAL
    int "Baud rate for serial port" if LOW_LEVEL_OPTIONS
    default 250000
    help
        Specify the baud rate of the serial port. This should be set
        to 250000. Read the FAQ before changing this value.

# Generic configuration options for USB
config USBSERIAL
    bool
config USBCANBUS
    bool
config USB
    bool
    default y if USBSERIAL || USBCANBUS
config USB_VENDOR_ID
    default 0x1d50
config USB_DEVICE_ID
    default 0x614e
config USB_SERIAL_NUMBER_CHIPID
    depends on USB && HAVE_CHIPID
    default y
config USB_SERIAL_NUMBER
    default "12345"

menu "USB ids"
    depends on USB && LOW_LEVEL_OPTIONS
config USB_VENDOR_ID
    hex "USB vendor ID" if USBSERIAL
config USB_DEVICE_ID
    hex "USB device ID" if USBSERIAL
config USB_SERIAL_NUMBER_CHIPID
    bool "USB serial number from CHIPID" if HAVE_CHIPID
config USB_SERIAL_NUMBER
    string "USB serial number" if !USB_SERIAL_NUMBER_CHIPID
endmenu

# Optional features that can be disabled (for devices with small flash sizes)
config WANT_ADC
    bool
    depends on HAVE_GPIO_ADC
    default y
config WANT_SPI
    bool
    depends on HAVE_GPIO && HAVE_GPIO_SPI
    default y
config WANT_SOFTWARE_SPI
    bool
    depends on WANT_SPI
    default y
config WANT_I2C
    bool
    depends on HAVE_GPIO && HAVE_GPIO_I2C
    default y
config WANT_SOFTWARE_I2C
    bool
    depends on WANT_I2C
    default y
config WANT_HARD_PWM
    bool
    depends on HAVE_GPIO_HARD_PWM
    default y
config WANT_BUTTONS
    bool
    depends on HAVE_GPIO
    default y
config WANT_TMCUART
    bool
    depends on HAVE_GPIO
    default y
config WANT_NEOPIXEL
    bool
    depends on HAVE_GPIO
    default y
config WANT_PULSE_COUNTER
    bool
    depends on HAVE_GPIO
    default y
config WANT_ST7920
    bool
    depends on HAVE_GPIO
    default y
config WANT_HD44780
    bool
    depends on HAVE_GPIO
    default y
config WANT_ADXL345
    bool
    depends on WANT_SPI
    default y
config WANT_LIS2DW
    bool
    depends on WANT_SPI || WANT_I2C
    default y
config WANT_MPU9250
    bool
    depends on WANT_I2C
    default y
config WANT_ICM20948
    bool
    depends on WANT_I2C
    default y
config WANT_THERMOCOUPLE
    bool
    depends on WANT_SPI
    default y
config WANT_HX71X
    bool
    depends on HAVE_GPIO
    default y
config WANT_ADS1220
    bool
    depends on WANT_SPI
    default y
config WANT_LDC1612
    bool
    depends on WANT_I2C
    default y
config WANT_SENSOR_ANGLE
    bool
    depends on WANT_SPI
    default y
config NEED_SENSOR_BULK
    bool
    depends on WANT_ADXL345 || WANT_LIS2DW || WANT_MPU9250 || WANT_ICM20948 \
        || WANT_HX71X || WANT_ADS1220 || WANT_LDC1612 || WANT_SENSOR_ANGLE
    default y
menu "Optional features (to reduce code size)"
    depends on HAVE_LIMITED_CODE_SIZE
config WANT_ADC
    bool "Support micro-controller based ADC (analog to digital)"
    depends on HAVE_GPIO_ADC
config WANT_SPI
    bool "Support communicating with external chips via SPI bus"
    depends on HAVE_GPIO && HAVE_GPIO_SPI
config WANT_SOFTWARE_SPI
    bool "Support software based SPI \"bit-banging\""
    depends on WANT_SPI
config WANT_I2C
    bool "Support communicating with external chips via I2C bus"
    depends on HAVE_GPIO && HAVE_GPIO_I2C
config WANT_SOFTWARE_I2C
    bool "Support software based I2C \"bit-banging\""
    depends on WANT_I2C
config WANT_HARD_PWM
    bool "Support hardware PWM (pulse width modulation)"
    depends on HAVE_GPIO_HARD_PWM
config WANT_BUTTONS
    bool "Support GPIO based button reading"
    depends on HAVE_GPIO
config WANT_TMCUART
    bool "Support Trinamic stepper motor driver UART communication"
    depends on HAVE_GPIO
config WANT_NEOPIXEL
    bool "Support 'neopixel' type LED control"
    depends on HAVE_GPIO
config WANT_PULSE_COUNTER
    bool "Support measuring fan tachometer GPIO pins"
    depends on HAVE_GPIO
comment "LCD chips"
config WANT_ST7920
    bool "Support ST7920 LCD display"
    depends on HAVE_GPIO
config WANT_HD44780
    bool "Support HD44780 LCD display"
    depends on HAVE_GPIO
comment "Accelerometer chips"
    depends on WANT_SPI || WANT_I2C
config WANT_ADXL345
    bool "Support adxl accelerometers"
    depends on WANT_SPI
config WANT_LIS2DW
    bool "Support lis2dw and lis3dh 3-axis accelerometers"
    depends on WANT_SPI || WANT_I2C
config WANT_MPU9250
    bool "Support MPU accelerometers"
    depends on WANT_I2C
config WANT_ICM20948
    bool "Support ICM20948 accelerometer"
    depends on WANT_I2C
comment "External ADC type chips"
config WANT_THERMOCOUPLE
    bool "Support thermocouple MAX sensors"
    depends on WANT_SPI
config WANT_HX71X
    bool "Support HX711 and HX717 ADC chips"
    depends on HAVE_GPIO
config WANT_ADS1220
    bool "Support ADS 1220 ADC chip"
    depends on WANT_SPI
comment "Other external sensor chips"
    depends on WANT_SPI || WANT_I2C
config WANT_LDC1612
    bool "Support ldc1612 eddy current sensor"
    depends on WANT_I2C
config WANT_SENSOR_ANGLE
    bool "Support angle sensors"
    depends on WANT_SPI
endmenu

# Generic configuration options for CANbus
config CANSERIAL
    bool
config CANBUS
    bool
    default y if CANSERIAL || USBCANBUS
config CANBUS_FREQUENCY
    int "CAN bus speed" if LOW_LEVEL_OPTIONS && CANBUS
    default 1000000
config CANBUS_FILTER
    bool
    default y if CANSERIAL

# Stepper optimizations
config INLINE_STEPPER_HACK
    # Enables gcc to inline stepper_event() into the main timer irq handler
    bool
    depends on HAVE_GPIO
    default y
config HAVE_STEPPER_OPTIMIZED_BOTH_EDGE
    bool
config WANT_STEPPER_OPTIMIZED_BOTH_EDGE
    bool "Optimize stepper code for 'step on both edges'" if LOW_LEVEL_OPTIONS
    depends on INLINE_STEPPER_HACK && HAVE_STEPPER_OPTIMIZED_BOTH_EDGE
    default y
    help
        Optimize the stepper code for Trinamic stepper motor drivers
        that are configured in UART or SPI mode (and thus can perform
        a step on both "edges" of the step pin).  Enabling this option
        typically improves the stepper cpu performance by about 20%
        when using these drivers.  If this option is disabled the code
        will instead deploy optimizations that improve the cpu
        performance by about 20% for traditional drivers (those that
        take a step only on the "rising" or "falling" level of the
        step pin).

# Support setting gpio state at startup
config INITIAL_PINS
    string "GPIO pins to set at micro-controller startup"
    depends on LOW_LEVEL_OPTIONS
    help
        One may specify a comma separated list of gpio pins to set
        during the micro-controller startup sequence. By default the
        pins will be set to output high - preface a pin with a '!'
        character to set that pin to output low.

# The HAVE_x options allow boards to disable support for some commands
# if the hardware does not support the feature.
config HAVE_GPIO
    bool
config HAVE_GPIO_ADC
    bool
config HAVE_GPIO_SPI
    bool
config HAVE_GPIO_SDIO
    bool
config HAVE_GPIO_I2C
    bool
config HAVE_GPIO_HARD_PWM
    bool
config HAVE_STRICT_TIMING
    bool
config HAVE_CHIPID
    bool
config HAVE_BOOTLOADER_REQUEST
    bool
config HAVE_LIMITED_CODE_SIZE
    bool
config HAVE_SOFTWARE_DIVIDE_REQUIRED
    bool