12#ifndef ZEPHYR_INCLUDE_DRIVERS_MISC_TMC6460_TMC6460_H_
13#define ZEPHYR_INCLUDE_DRIVERS_MISC_TMC6460_TMC6460_H_
58#define TMC6460_CHIP_ID 0x0000U
61#define TMC6460_CHIP_ID_RESET_VALUE 0x36343630U
63#define TMC6460_CHIP_VARIANT 0x0001U
64#define TMC6460_CHIP_REVISION 0x0002U
65#define TMC6460_CHIP_INPUTS_RAW 0x0004U
66#define TMC6460_CHIP_OUTPUTS_RAW 0x0005U
67#define TMC6460_CHIP_IO_MATRIX 0x0006U
68#define TMC6460_CHIP_IO_PU_PD 0x0007U
69#define TMC6460_CHIP_IO_CONFIG 0x0008U
72#define TMC6460_CHIP_IO_CONFIG_RESET_VALUE 0x70055000U
73#define TMC6460_CHIP_STATUS_FLAGS 0x0009U
74#define TMC6460_CHIP_EVENTS 0x000AU
75#define TMC6460_CHIP_FAULTN_INT_MASK 0x000BU
76#define TMC6460_CHIP_SPI_STATUS_MASK 0x000CU
79#define TMC6460_CLK_CTRL_CONFIG 0x0040U
80#define TMC6460_CLK_CTRL_STATUS 0x0041U
83#define TMC6460_ADC_CONFIG 0x0080U
84#define TMC6460_ADC_ADC_VERSION 0x0081U
85#define TMC6460_ADC_I2_I1_RAW 0x0082U
86#define TMC6460_ADC_VM_I3_RAW 0x0083U
87#define TMC6460_ADC_TEMP_RAW 0x0084U
88#define TMC6460_ADC_AIN_V_AIN_U_RAW 0x0085U
89#define TMC6460_ADC_AIN_AIN_W_RAW 0x0086U
90#define TMC6460_ADC_STATUS 0x008AU
91#define TMC6460_ADC_I123 0x008CU
94#define TMC6460_MCC_ADC_I_GEN_CONFIG 0x00C0U
95#define TMC6460_MCC_ADC_IW_IU 0x00C1U
96#define TMC6460_MCC_ADC_IV 0x00C2U
97#define TMC6460_MCC_ADC_CSA_GAIN 0x00C3U
98#define TMC6460_MCC_ADC_EVENTS 0x00C4U
99#define TMC6460_MCC_ADC_DYN_GAIN_LIMITS_4X_3X 0x00C5U
100#define TMC6460_MCC_ADC_DYN_GAIN_LIMIT_2X 0x00C6U
101#define TMC6460_MCC_ADC_TEMP_LIMITS 0x00C7U
102#define TMC6460_MCC_ADC_CURRENT_OVERLOAD 0x00C8U
105#define TMC6460_MCC_CONFIG_MOTOR_MOTION 0x0100U
106#define TMC6460_MCC_CONFIG_GDRV 0x0101U
107#define TMC6460_MCC_CONFIG_PWM 0x0102U
108#define TMC6460_MCC_CONFIG_PWM_PERIOD 0x0103U
109#define TMC6460_MCC_CONFIG_BRAKE_CHOPPER_LIMITS 0x0104U
110#define TMC6460_MCC_CONFIG_MCC_STATUS 0x0105U
111#define TMC6460_MCC_CONFIG_TORQUE_FF_ACC_CONFIG 0x0106U
112#define TMC6460_MCC_CONFIG_TORQUE_FF_VISC_FRIC_CONFIG 0x0107U
113#define TMC6460_MCC_CONFIG_TORQUE_FF_COULOMB_FRIC 0x0108U
114#define TMC6460_MCC_CONFIG_TORQUE_FEEDFORWARD 0x0109U
117#define TMC6460_FOC_PID_CONFIG 0x0140U
118#define TMC6460_FOC_PID_U_S_MAX 0x0141U
119#define TMC6460_FOC_PID_FLUX_COEFF 0x0142U
120#define TMC6460_FOC_PID_TORQUE_COEFF 0x0143U
121#define TMC6460_FOC_PID_FIELDWEAK_COEFF 0x0144U
122#define TMC6460_FOC_PID_VELOCITY_COEFF 0x0145U
123#define TMC6460_FOC_PID_POSITION_COEFF 0x0146U
124#define TMC6460_FOC_PID_POSITION_TOLERANCE 0x0147U
125#define TMC6460_FOC_PID_POSITION_TOLERANCE_DELAY 0x0148U
126#define TMC6460_FOC_PID_UQ_UD_LIMITS 0x0149U
127#define TMC6460_FOC_PID_TORQUE_FLUX_LIMITS 0x014AU
128#define TMC6460_FOC_PID_VELOCITY_LIMIT 0x014BU
129#define TMC6460_FOC_PID_POSITION_LIMIT_LOW 0x014CU
130#define TMC6460_FOC_PID_POSITION_LIMIT_HIGH 0x014DU
131#define TMC6460_FOC_PID_TORQUE_FLUX_TARGET 0x014EU
132#define TMC6460_FOC_PID_TORQUE_FLUX_OFFSET 0x014FU
133#define TMC6460_FOC_PID_VELOCITY_TARGET 0x0150U
134#define TMC6460_FOC_PID_VELOCITY_OFFSET 0x0151U
135#define TMC6460_FOC_PID_POSITION_TARGET 0x0152U
136#define TMC6460_FOC_PID_TORQUE_FLUX_ACTUAL 0x0153U
137#define TMC6460_FOC_PID_VELOCITY_ACTUAL 0x0154U
138#define TMC6460_FOC_PID_POSITION_ACTUAL 0x0155U
139#define TMC6460_FOC_PID_POSITION_ACTUAL_OFFSET 0x0156U
140#define TMC6460_FOC_PID_TORQUE_ERROR 0x0157U
141#define TMC6460_FOC_PID_FLUX_ERROR 0x0158U
142#define TMC6460_FOC_PID_VELOCITY_ERROR 0x0159U
143#define TMC6460_FOC_PID_VELOCITY_ERROR_MAX 0x015AU
144#define TMC6460_FOC_PID_POSITION_ERROR 0x015BU
145#define TMC6460_FOC_PID_POSITION_ERROR_MAX 0x015CU
146#define TMC6460_FOC_PID_TORQUE_INTEGRATOR 0x015DU
147#define TMC6460_FOC_PID_FLUX_INTEGRATOR 0x015EU
148#define TMC6460_FOC_PID_VELOCITY_INTEGRATOR 0x015FU
149#define TMC6460_FOC_PID_POSITION_INTEGRATOR 0x0160U
150#define TMC6460_FOC_PIDIN_TORQUE_FLUX_TARGET 0x0161U
151#define TMC6460_FOC_PIDIN_VELOCITY_TARGET 0x0162U
152#define TMC6460_FOC_PIDIN_POSITION_TARGET 0x0163U
153#define TMC6460_FOC_PIDIN_TORQUE_FLUX_TARGET_LIMITED 0x0164U
154#define TMC6460_FOC_PIDIN_VELOCITY_TARGET_LIMITED 0x0165U
155#define TMC6460_FOC_PIDIN_POSITION_TARGET_LIMITED 0x0166U
156#define TMC6460_FOC_FOC_IBETA_IALPHA 0x0167U
157#define TMC6460_FOC_FOC_IQ_ID 0x0168U
158#define TMC6460_FOC_FOC_UQ_UD 0x0169U
159#define TMC6460_FOC_FOC_UQ_UD_LIMITED 0x016AU
160#define TMC6460_FOC_FOC_UBETA_UALPHA 0x016BU
161#define TMC6460_FOC_FOC_UW_UU 0x016CU
162#define TMC6460_FOC_FOC_UV 0x016DU
163#define TMC6460_FOC_PWM_V_U 0x016EU
164#define TMC6460_FOC_PWM_W 0x016FU
165#define TMC6460_FOC_FOC_STATUS 0x0170U
166#define TMC6460_FOC_U_S_ACTUAL_I_S_ACTUAL 0x0171U
167#define TMC6460_FOC_P_MOTOR 0x0172U
168#define TMC6460_FOC_I_T_ACTUAL 0x0173U
169#define TMC6460_FOC_PRBS_AMPLITUDE 0x0174U
170#define TMC6460_FOC_PRBS_DOWN_SAMPLING_RATIO 0x0175U
173#define TMC6460_BIQUAD_BIQUAD_EN 0x0180U
174#define TMC6460_BIQUAD_VELOCITY_A1 0x0181U
175#define TMC6460_BIQUAD_VELOCITY_A2 0x0182U
176#define TMC6460_BIQUAD_VELOCITY_B0 0x0183U
177#define TMC6460_BIQUAD_VELOCITY_B1 0x0184U
178#define TMC6460_BIQUAD_VELOCITY_B2 0x0185U
179#define TMC6460_BIQUAD_TORQUE_A1 0x0186U
180#define TMC6460_BIQUAD_TORQUE_A2 0x0187U
181#define TMC6460_BIQUAD_TORQUE_B0 0x0188U
182#define TMC6460_BIQUAD_TORQUE_B1 0x0189U
183#define TMC6460_BIQUAD_TORQUE_B2 0x018AU
186#define TMC6460_RAMPER_TIME_CONFIG 0x01C0U
187#define TMC6460_RAMPER_SWITCH_MODE 0x01C1U
188#define TMC6460_RAMPER_PHI_E 0x01C3U
189#define TMC6460_RAMPER_A1 0x01C4U
190#define TMC6460_RAMPER_A2 0x01C5U
191#define TMC6460_RAMPER_A_MAX 0x01C6U
192#define TMC6460_RAMPER_D1 0x01C7U
193#define TMC6460_RAMPER_D2 0x01C8U
194#define TMC6460_RAMPER_D_MAX 0x01C9U
195#define TMC6460_RAMPER_V_START 0x01CAU
196#define TMC6460_RAMPER_V1 0x01CBU
197#define TMC6460_RAMPER_V2 0x01CCU
198#define TMC6460_RAMPER_V_STOP 0x01CDU
199#define TMC6460_RAMPER_V_MAX 0x01CEU
200#define TMC6460_RAMPER_ACCELERATION 0x01CFU
201#define TMC6460_RAMPER_V_ACTUAL 0x01D0U
202#define TMC6460_RAMPER_POSITION 0x01D1U
203#define TMC6460_RAMPER_POSITION_LATCH 0x01D2U
204#define TMC6460_RAMPER_POSITION_ACTUAL_LATCH 0x01D3U
205#define TMC6460_RAMPER_STATUS 0x01D4U
206#define TMC6460_RAMPER_EVENTS 0x01D5U
209#define TMC6460_EXT_CTRL_VOLTAGE 0x0200U
210#define TMC6460_EXT_CTRL_PWM_V_U 0x0202U
211#define TMC6460_EXT_CTRL_PWM_W 0x0203U
214#define TMC6460_FEEDBACK_CONF_CH_A 0x0240U
215#define TMC6460_FEEDBACK_CONF_CH_B 0x0241U
216#define TMC6460_FEEDBACK_PHI_E_OFFSET 0x0242U
217#define TMC6460_FEEDBACK_LUT 0x0243U
218#define TMC6460_FEEDBACK_VELOCITY_FRQ_CONF 0x0244U
219#define TMC6460_FEEDBACK_VELOCITY_PER_CONF 0x0245U
220#define TMC6460_FEEDBACK_VELOCITY_PER_FILTER 0x0246U
221#define TMC6460_FEEDBACK_PHI_CONVERTED 0x0247U
222#define TMC6460_FEEDBACK_CH_A 0x0248U
223#define TMC6460_FEEDBACK_CH_B 0x0249U
224#define TMC6460_FEEDBACK_VELOCITY_FRQ 0x024AU
225#define TMC6460_FEEDBACK_VELOCITY_PER 0x024BU
226#define TMC6460_FEEDBACK_LUT_WDATA 0x024CU
227#define TMC6460_FEEDBACK_PHI_EXT_A 0x024DU
228#define TMC6460_FEEDBACK_PHI_EXT_B 0x024EU
229#define TMC6460_FEEDBACK_VELOCITY_EXT 0x024FU
230#define TMC6460_FEEDBACK_OUTPUT_CONF 0x0250U
231#define TMC6460_FEEDBACK_PHI_E 0x0251U
232#define TMC6460_FEEDBACK_PHI_DIFF_LIMIT 0x0252U
235#define TMC6460_ABN_CONFIG 0x0280U
236#define TMC6460_ABN_COUNT 0x0281U
237#define TMC6460_ABN_COUNT_N_CAPTURE 0x0282U
238#define TMC6460_ABN_COUNT_N_WRITE 0x0283U
239#define TMC6460_ABN_EVENTS 0x0284U
242#define TMC6460_ABN2_CONFIG 0x02C0U
243#define TMC6460_ABN2_COUNT 0x02C1U
244#define TMC6460_ABN2_COUNT_N_CAPTURE 0x02C2U
245#define TMC6460_ABN2_COUNT_N_WRITE 0x02C3U
246#define TMC6460_ABN2_EVENTS 0x02C4U
249#define TMC6460_HALL_MAP_CONFIG 0x0300U
250#define TMC6460_HALL_DIG_COUNT 0x0301U
251#define TMC6460_HALL_ANA_CONFIG 0x0302U
252#define TMC6460_HALL_ANA_UX_CONFIG 0x0303U
253#define TMC6460_HALL_ANA_VN_CONFIG 0x0304U
254#define TMC6460_HALL_ANA_WY_CONFIG 0x0305U
255#define TMC6460_HALL_ANA_UX_OUT 0x0306U
256#define TMC6460_HALL_ANA_VN_OUT 0x0307U
257#define TMC6460_HALL_ANA_WY_OUT 0x0308U
258#define TMC6460_HALL_ANA_OUT 0x0309U
259#define TMC6460_HALL_DIG_EVENTS 0x030AU
262#define TMC6460_UART_CONTROL 0x0340U
263#define TMC6460_UART_TIMEOUT 0x0341U
264#define TMC6460_UART_STATUS 0x0342U
265#define TMC6460_UART_EVENTS 0x0343U
266#define TMC6460_UART_RTMI_CH_0 0x0344U
267#define TMC6460_UART_RTMI_CH_1 0x0345U
268#define TMC6460_UART_RTMI_CH_2 0x0346U
269#define TMC6460_UART_RTMI_CH_3 0x0347U
270#define TMC6460_UART_RTMI_CH_4 0x0348U
271#define TMC6460_UART_RTMI_CH_5 0x0349U
272#define TMC6460_UART_RTMI_CH_6 0x034AU
273#define TMC6460_UART_RTMI_CH_7 0x034BU
276#define TMC6460_IO_CONTROLLER_CONTROL 0x0380U
277#define TMC6460_IO_CONTROLLER_COMMAND 0x0381U
278#define TMC6460_IO_CONTROLLER_RESPONSE_0 0x0382U
279#define TMC6460_IO_CONTROLLER_RESPONSE_1 0x0383U
280#define TMC6460_IO_CONTROLLER_RESPONSE_2 0x0384U
281#define TMC6460_IO_CONTROLLER_RESPONSE_3 0x0385U
287#define TMC6460_CLK_CTRL_CONFIG_COMMIT_MASK 0x00000001U
288#define TMC6460_CLK_CTRL_CONFIG_COMMIT_SHIFT 0
289#define TMC6460_CLK_CTRL_CONFIG_PLL_SRC_MASK 0x00000002U
290#define TMC6460_CLK_CTRL_CONFIG_PLL_SRC_SHIFT 1
291#define TMC6460_CLK_CTRL_CONFIG_PLL_EN_MASK 0x00000004U
292#define TMC6460_CLK_CTRL_CONFIG_PLL_EN_SHIFT 2
293#define TMC6460_CLK_CTRL_CONFIG_ADC_CLK_EN_MASK 0x00000008U
294#define TMC6460_CLK_CTRL_CONFIG_ADC_CLK_EN_SHIFT 3
295#define TMC6460_CLK_CTRL_CONFIG_PWM_CLK_EN_MASK 0x00000010U
296#define TMC6460_CLK_CTRL_CONFIG_PWM_CLK_EN_SHIFT 4
297#define TMC6460_CLK_CTRL_CONFIG_CLK_FSM_EN_MASK 0x00000020U
298#define TMC6460_CLK_CTRL_CONFIG_CLK_FSM_EN_SHIFT 5
299#define TMC6460_CLK_CTRL_CONFIG_CLOCK_DIVIDER_MASK 0x00001F00U
300#define TMC6460_CLK_CTRL_CONFIG_CLOCK_DIVIDER_SHIFT 8
303#define TMC6460_CLK_CTRL_STATUS_CLK_1M0_OK_MASK 0x00000001U
304#define TMC6460_CLK_CTRL_STATUS_CLK_1M0_OK_SHIFT 0
305#define TMC6460_CLK_CTRL_STATUS_PLL_ERR_MASK 0x00000010U
306#define TMC6460_CLK_CTRL_STATUS_PLL_ERR_SHIFT 4
307#define TMC6460_CLK_CTRL_STATUS_PLL_LOCK_ON_MASK 0x00000020U
308#define TMC6460_CLK_CTRL_STATUS_PLL_LOCK_ON_SHIFT 5
309#define TMC6460_CLK_CTRL_STATUS_PLL_READY_MASK 0x00000040U
310#define TMC6460_CLK_CTRL_STATUS_PLL_READY_SHIFT 6
313#define TMC6460_MCC_CONFIG_MOTOR_MOTION_N_POLE_PAIRS_MASK 0x0000007FU
314#define TMC6460_MCC_CONFIG_MOTOR_MOTION_N_POLE_PAIRS_SHIFT 0
315#define TMC6460_MCC_CONFIG_MOTOR_MOTION_MOTOR_TYPE_MASK 0x00000180U
316#define TMC6460_MCC_CONFIG_MOTOR_MOTION_MOTOR_TYPE_SHIFT 7
317#define TMC6460_MCC_CONFIG_MOTOR_MOTION_MOTION_MODE_MASK 0x00001E00U
318#define TMC6460_MCC_CONFIG_MOTOR_MOTION_MOTION_MODE_SHIFT 9
319#define TMC6460_MCC_CONFIG_MOTOR_MOTION_RAMP_MODE_MASK 0x00002000U
320#define TMC6460_MCC_CONFIG_MOTOR_MOTION_RAMP_MODE_SHIFT 13
321#define TMC6460_MCC_CONFIG_MOTOR_MOTION_RAMP_EN_MASK 0x00004000U
322#define TMC6460_MCC_CONFIG_MOTOR_MOTION_RAMP_EN_SHIFT 14
323#define TMC6460_MCC_CONFIG_MOTOR_MOTION_RAMP_USE_PHI_E_MASK 0x00008000U
324#define TMC6460_MCC_CONFIG_MOTOR_MOTION_RAMP_USE_PHI_E_SHIFT 15
327#define TMC6460_MCC_ADC_CSA_GAIN_CSA_GAIN_MASK 0x00000003U
328#define TMC6460_MCC_ADC_CSA_GAIN_CSA_GAIN_SHIFT 0
331#define TMC6460_MCC_CONFIG_GDRV_DRV_EN_BIT_MASK 0x00010000U
332#define TMC6460_MCC_CONFIG_GDRV_DRV_EN_BIT_SHIFT 16
333#define TMC6460_MCC_CONFIG_GDRV_CHARGE_PUMP_EN_MASK 0x80000000U
334#define TMC6460_MCC_CONFIG_GDRV_CHARGE_PUMP_EN_SHIFT 31
335#define TMC6460_MCC_CONFIG_GDRV_USE_INTERNAL_R_REF_MASK 0x01000000U
336#define TMC6460_MCC_CONFIG_GDRV_USE_INTERNAL_R_REF_SHIFT 24
337#define TMC6460_MCC_CONFIG_GDRV_SLEW_RATE_MASK 0x00000003U
338#define TMC6460_MCC_CONFIG_GDRV_SLEW_RATE_SHIFT 0
339#define TMC6460_MCC_CONFIG_GDRV_LS_RES_ON_MASK 0x00000030U
340#define TMC6460_MCC_CONFIG_GDRV_LS_RES_ON_SHIFT 4
343#define TMC6460_MCC_CONFIG_PWM_CHOP_MASK 0x00000007U
344#define TMC6460_MCC_CONFIG_PWM_CHOP_SHIFT 0
345#define TMC6460_MCC_CONFIG_PWM_SV_MODE_MASK 0x00000030U
346#define TMC6460_MCC_CONFIG_PWM_SV_MODE_SHIFT 4
349#define TMC6460_MCC_CONFIG_PWM_PERIOD_MAX_COUNT_MASK 0x0000FFFFU
350#define TMC6460_MCC_CONFIG_PWM_PERIOD_MAX_COUNT_SHIFT 0
353#define TMC6460_EXT_CTRL_VOLTAGE_UD_MASK 0x0000FFFFU
354#define TMC6460_EXT_CTRL_VOLTAGE_UD_SHIFT 0
366#define TMC6460_ADC_CONFIG_NRST_ADC_0_MASK 0x00000004U
367#define TMC6460_ADC_CONFIG_NRST_ADC_0_SHIFT 2
368#define TMC6460_ADC_CONFIG_NRST_ADC_1_MASK 0x00000008U
369#define TMC6460_ADC_CONFIG_NRST_ADC_1_SHIFT 3
370#define TMC6460_ADC_CONFIG_NRST_BOTH_MASK \
371 (TMC6460_ADC_CONFIG_NRST_ADC_0_MASK | TMC6460_ADC_CONFIG_NRST_ADC_1_MASK)
372#define TMC6460_ADC_CONFIG_CSA_AZ_FLT_EXP_MASK 0x00000F00U
373#define TMC6460_ADC_CONFIG_CSA_AZ_FLT_EXP_SHIFT 8
376#define TMC6460_ADC_STATUS_ADC_0_READY_MASK 0x00000001U
377#define TMC6460_ADC_STATUS_ADC_1_READY_MASK 0x00000002U
383#define TMC6460_MOTOR_TYPE_BLDC 3U
386#define TMC6460_MOTION_MODE_PWM_OFF 0U
387#define TMC6460_MOTION_MODE_VOLTAGE_EXT 11U
390#define TMC6460_RAMP_MODE_VELOCITY 1U
393#define TMC6460_CSA_GAIN_X1 0U
396#define TMC6460_SLEW_RATE_SR_400_V_PER_US 2U
399#define TMC6460_LS_RES_55_MOHM 3U
402#define TMC6460_PWM_CHOP_CENTERED 7U
405#define TMC6460_PWM_SV_MODE_HARMONIC 1U
408#define TMC6460_FOC_PID_TORQUE_FLUX_TARGET_FLUX_MASK 0x0000FFFFU
409#define TMC6460_FOC_PID_TORQUE_FLUX_TARGET_FLUX_SHIFT 0
410#define TMC6460_FOC_PID_TORQUE_FLUX_TARGET_TORQUE_MASK 0xFFFF0000U
411#define TMC6460_FOC_PID_TORQUE_FLUX_TARGET_TORQUE_SHIFT 16
414#define TMC6460_FOC_PID_TORQUE_FLUX_ACTUAL_FLUX_MASK 0x0000FFFFU
415#define TMC6460_FOC_PID_TORQUE_FLUX_ACTUAL_FLUX_SHIFT 0
416#define TMC6460_FOC_PID_TORQUE_FLUX_ACTUAL_TORQUE_MASK 0xFFFF0000U
417#define TMC6460_FOC_PID_TORQUE_FLUX_ACTUAL_TORQUE_SHIFT 16
420#define TMC6460_FOC_PID_VELOCITY_TARGET_MASK 0xFFFFFFFFU
421#define TMC6460_FOC_PID_VELOCITY_TARGET_SHIFT 0
424#define TMC6460_FOC_PID_VELOCITY_ACTUAL_MASK 0xFFFFFFFFU
425#define TMC6460_FOC_PID_VELOCITY_ACTUAL_SHIFT 0
428#define TMC6460_FOC_PID_POSITION_TARGET_MASK 0xFFFFFFFFU
429#define TMC6460_FOC_PID_POSITION_TARGET_SHIFT 0
432#define TMC6460_FOC_PID_POSITION_ACTUAL_MASK 0xFFFFFFFFU
433#define TMC6460_FOC_PID_POSITION_ACTUAL_SHIFT 0
436#define TMC6460_BIQUAD_BIQUAD_EN_VELOCITY_EN_MASK 0x00000001U
437#define TMC6460_BIQUAD_BIQUAD_EN_VELOCITY_EN_SHIFT 0
438#define TMC6460_BIQUAD_BIQUAD_EN_TORQUE_EN_MASK 0x00000002U
439#define TMC6460_BIQUAD_BIQUAD_EN_TORQUE_EN_SHIFT 1
442#define TMC6460_RAMPER_STATUS_V_REACHED_MASK 0x00000800U
443#define TMC6460_RAMPER_STATUS_V_REACHED_SHIFT 11
444#define TMC6460_RAMPER_STATUS_POS_REACHED_MASK 0x00001000U
445#define TMC6460_RAMPER_STATUS_POS_REACHED_SHIFT 12
446#define TMC6460_RAMPER_STATUS_V_ZERO_MASK 0x00002000U
447#define TMC6460_RAMPER_STATUS_V_ZERO_SHIFT 13
450#define TMC6460_RAMPER_V_ACTUAL_MASK 0x0FFFFFFFU
451#define TMC6460_RAMPER_V_ACTUAL_SHIFT 0
454#define TMC6460_RAMPER_POSITION_MASK 0xFFFFFFFFU
455#define TMC6460_RAMPER_POSITION_SHIFT 0
458#define TMC6460_RAMPER_V_MAX_MASK 0x07FFFFFFU
459#define TMC6460_RAMPER_V_MAX_SHIFT 0
462#define TMC6460_RAMPER_V_START_MASK 0x007FFFFFu
463#define TMC6460_RAMPER_V_START_SHIFT 0
466#define TMC6460_RAMPER_V_STOP_MASK 0x007FFFFFu
467#define TMC6460_RAMPER_V_STOP_SHIFT 0
470#define TMC6460_RAMPER_A1_MASK 0x007FFFFFu
471#define TMC6460_RAMPER_A1_SHIFT 0
474#define TMC6460_RAMPER_A2_MASK 0x007FFFFFu
475#define TMC6460_RAMPER_A2_SHIFT 0
478#define TMC6460_RAMPER_A_MAX_MASK 0x007FFFFFu
479#define TMC6460_RAMPER_A_MAX_SHIFT 0
482#define TMC6460_RAMPER_D1_MASK 0x007FFFFFu
483#define TMC6460_RAMPER_D1_SHIFT 0
486#define TMC6460_RAMPER_D2_MASK 0x007FFFFFu
487#define TMC6460_RAMPER_D2_SHIFT 0
490#define TMC6460_RAMPER_D_MAX_MASK 0x007FFFFFu
491#define TMC6460_RAMPER_D_MAX_SHIFT 0
494#define TMC6460_RAMPER_V1_MASK 0x07FFFFFFu
495#define TMC6460_RAMPER_V1_SHIFT 0
498#define TMC6460_RAMPER_V2_MASK 0x07FFFFFFu
499#define TMC6460_RAMPER_V2_SHIFT 0
502#define TMC6460_RAMPER_ACCELERATION_MASK 0x00FFFFFFU
503#define TMC6460_RAMPER_ACCELERATION_SHIFT 0U
506#define TMC6460_FEEDBACK_OUTPUT_CONF_PHI_E_SRC_MASK 0x00030000U
507#define TMC6460_FEEDBACK_OUTPUT_CONF_PHI_E_SRC_SHIFT 16
508#define TMC6460_FEEDBACK_OUTPUT_CONF_POSITION_SRC_MASK 0x00100000U
509#define TMC6460_FEEDBACK_OUTPUT_CONF_POSITION_SRC_SHIFT 20
510#define TMC6460_FEEDBACK_OUTPUT_CONF_VELOCITY_SRC_MASK 0x00200000U
511#define TMC6460_FEEDBACK_OUTPUT_CONF_VELOCITY_SRC_SHIFT 21
514#define TMC6460_UART_CONTROL_MANTISSA_LIMIT_MASK 0x00001FFFU
515#define TMC6460_UART_CONTROL_MANTISSA_LIMIT_SHIFT 0
516#define TMC6460_UART_CONTROL_NORMAL_CRC_EN_MASK 0x00100000U
517#define TMC6460_UART_CONTROL_NORMAL_CRC_EN_SHIFT 20
518#define TMC6460_UART_CONTROL_RTMI_CRC_EN_MASK 0x00200000U
519#define TMC6460_UART_CONTROL_RTMI_CRC_EN_SHIFT 21
520#define TMC6460_UART_CONTROL_RTMI_EN_MASK 0x00400000U
521#define TMC6460_UART_CONTROL_RTMI_EN_SHIFT 22
522#define TMC6460_UART_CONTROL_RTMI_SAMPLING_MASK 0xFF000000U
523#define TMC6460_UART_CONTROL_RTMI_SAMPLING_SHIFT 24
526#define TMC6460_CHIP_STATUS_FLAGS_SYS_READY_STATE_MASK 0x40000000U
527#define TMC6460_CHIP_STATUS_FLAGS_SYS_READY_STATE_SHIFT 30
528#define TMC6460_CHIP_STATUS_FLAGS_GDRV_ON_STATE_MASK 0x80000000U
529#define TMC6460_CHIP_STATUS_FLAGS_GDRV_ON_STATE_SHIFT 31
533#define TMC6460_FIELD(_addr, _mask, _shift, _signed) \
534 ((struct tmc6460_field){ \
538 .is_signed = (_signed), \
648 reg_val &= ~field.mask;
649 reg_val |= (field_val << field.
shift) & field.
mask;
static uint32_t tmc6460_field_update(uint32_t reg_val, struct tmc6460_field field, uint32_t field_val)
Update a bitfield within a register value (in memory only).
Definition tmc6460.h:645
int tmc6460_disable(const struct device *dev)
Disable the TMC6460 gate driver.
int tmc6460_poll_flag(const struct device *dev, uint16_t reg_addr, uint32_t flag_mask, uint32_t poll_interval_ms, uint32_t timeout_ms)
Poll a register until the given flag bits are set or a timeout.
int tmc6460_write(const struct device *dev, uint16_t reg_addr, uint32_t reg_val)
Write a value to a TMC6460 register.
int tmc6460_enable(const struct device *dev)
Enable the TMC6460 gate driver.
static int tmc6460_field_write(const struct device *dev, struct tmc6460_field field, uint32_t field_val)
Read-modify-write a bitfield on the device.
Definition tmc6460.h:664
int tmc6460_rtmi_stream_write(const struct device *dev, uint8_t rtmi_index, uint32_t value)
Write a value to an RTMI streamed register slot (UART only).
int tmc6460_read(const struct device *dev, uint16_t reg_addr, uint32_t *reg_val)
Read a value from a TMC6460 register.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
Describes a bitfield within a TMC6460 register.
Definition tmc6460.h:34
bool is_signed
True if the field holds a two's-complement signed value.
Definition tmc6460.h:42
uint32_t mask
Bit mask selecting the field within the register.
Definition tmc6460.h:36
uint8_t shift
Bit position of the field's least significant bit.
Definition tmc6460.h:38
uint16_t addr
16-bit register address containing the field.
Definition tmc6460.h:40