Commit 843625a2 authored by Jilay Pandya's avatar Jilay Pandya Committed by Anas Nashif
Browse files

drivers: stepper: change gpio-stepper dt-compatible

This commit changes compatible of gpio-stepper in driver

Signed-off-by: default avatarJilay Pandya <jilay.pandya@outlook.com>
parent df3b76b5
Loading
Loading
Loading
Loading
+1 −0
Changes for doc/hardware/peripherals/stepper.rst: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ be used in a boards devicetree to configure a stepper driver to its initial stat

See examples in:

- :dtcompatible:`zephyr,gpio-stepper`
- :dtcompatible:`adi,tmc5041`

Discord
+1 −1
Changes for drivers/stepper/Kconfig.gpio: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ menu "GPIO stepper driver"

config GPIO_STEPPER
	bool "Activate driver for gpio stepper control"
	depends on DT_HAS_ZEPHYR_GPIO_STEPPERS_ENABLED
	depends on DT_HAS_ZEPHYR_GPIO_STEPPER_ENABLED
	default y
	help
	  GPIO Stepper driver for stepper motor control with darlington arrays or dual H-bridge.
+33 −45
Changes for drivers/stepper/gpio_stepper_controller.c: 33 added lines, 45 removed lines.
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
 * SPDX-License-Identifier: Apache-2.0
 */

#define DT_DRV_COMPAT zephyr_gpio_steppers
#define DT_DRV_COMPAT zephyr_gpio_stepper

#include <zephyr/drivers/gpio.h>
#include <zephyr/kernel.h>
@@ -338,14 +338,13 @@ static int gpio_stepper_enable(const struct device *dev, bool enable)
	return 0;
}

static int gpio_stepper_motor_controller_init(const struct device *dev)
static int gpio_stepper_init(const struct device *dev)
{
	struct gpio_stepper_data *data = dev->data;
	const struct gpio_stepper_config *config = dev->config;

	data->dev = dev;
	LOG_DBG("Initializing %s gpio_stepper_motor_controller with %d pin", dev->name,
		NUM_CONTROL_PINS);
	LOG_DBG("Initializing %s gpio_stepper with %d pin", dev->name, NUM_CONTROL_PINS);
	for (uint8_t n_pin = 0; n_pin < NUM_CONTROL_PINS; n_pin++) {
		(void)gpio_pin_configure_dt(&config->control_pins[n_pin], GPIO_OUTPUT_INACTIVE);
	}
@@ -353,47 +352,36 @@ static int gpio_stepper_motor_controller_init(const struct device *dev)
	return 0;
}

#define GPIO_STEPPER_DEVICE_DATA_DEFINE(child)                                                     \
	static struct gpio_stepper_data gpio_stepper_data_##child = {                              \
		.step_gap = MAX_MICRO_STEP_RES >> (DT_PROP(child, micro_step_res) - 1),            \
	};                                                                                         \
	BUILD_ASSERT(DT_PROP(child, micro_step_res) <= STEPPER_MICRO_STEP_2,                       \
		     "gpio_stepper_controller driver supports up to 2 micro steps");
static const struct stepper_driver_api gpio_stepper_api = {
	.enable = gpio_stepper_enable,
	.move = gpio_stepper_move,
	.is_moving = gpio_stepper_is_moving,
	.set_actual_position = gpio_stepper_set_actual_position,
	.get_actual_position = gpio_stepper_get_actual_position,
	.set_target_position = gpio_stepper_set_target_position,
	.set_max_velocity = gpio_stepper_set_max_velocity,
	.enable_constant_velocity_mode = gpio_stepper_enable_constant_velocity_mode,
	.set_micro_step_res = gpio_stepper_set_micro_step_res,
	.get_micro_step_res = gpio_stepper_get_micro_step_res,
	.set_event_callback = gpio_stepper_set_event_callback,
};

#define GPIO_STEPPER_DEVICE_CONFIG_DEFINE(child)                                                   \
	static const struct gpio_dt_spec gpio_stepper_motor_control_pins_##child[] = {             \
		DT_FOREACH_PROP_ELEM_SEP(child, gpios, GPIO_DT_SPEC_GET_BY_IDX, (,)),              \
#define GPIO_STEPPER_DEFINE(inst)								\
	static const struct gpio_dt_spec gpio_stepper_motor_control_pins_##inst[] = {		\
		DT_INST_FOREACH_PROP_ELEM_SEP(inst, gpios, GPIO_DT_SPEC_GET_BY_IDX, (,)),	\
	};											\
	BUILD_ASSERT(                                                                              \
		ARRAY_SIZE(gpio_stepper_motor_control_pins_##child) == 4,                          \
	BUILD_ASSERT(ARRAY_SIZE(gpio_stepper_motor_control_pins_##inst) == 4,			\
		"gpio_stepper_controller driver currently supports only 4 wire configuration");	\
	static const struct gpio_stepper_config gpio_stepper_config_##child = {                    \
		.invert_direction = DT_PROP(child, invert_direction),                              \
		.control_pins = gpio_stepper_motor_control_pins_##child};

#define GPIO_STEPPER_API_DEFINE(child)                                                             \
	static const struct stepper_driver_api gpio_stepper_api_##child = {                        \
		.enable = gpio_stepper_enable,                                                     \
		.move = gpio_stepper_move,                                                         \
		.is_moving = gpio_stepper_is_moving,                                               \
		.set_actual_position = gpio_stepper_set_actual_position,                           \
		.get_actual_position = gpio_stepper_get_actual_position,                           \
		.set_target_position = gpio_stepper_set_target_position,                           \
		.set_max_velocity = gpio_stepper_set_max_velocity,                                 \
		.enable_constant_velocity_mode = gpio_stepper_enable_constant_velocity_mode,       \
		.set_micro_step_res = gpio_stepper_set_micro_step_res,                             \
		.get_micro_step_res = gpio_stepper_get_micro_step_res,                             \
		.set_event_callback = gpio_stepper_set_event_callback, };

#define GPIO_STEPPER_DEVICE_DEFINE(child)                                                          \
	DEVICE_DT_DEFINE(child, gpio_stepper_motor_controller_init, NULL,                          \
			 &gpio_stepper_data_##child, &gpio_stepper_config_##child, POST_KERNEL,    \
			 CONFIG_STEPPER_INIT_PRIORITY, &gpio_stepper_api_##child);

#define GPIO_STEPPER_CONTROLLER_DEFINE(inst)                                                       \
	DT_INST_FOREACH_CHILD(inst, GPIO_STEPPER_DEVICE_CONFIG_DEFINE);                            \
	DT_INST_FOREACH_CHILD(inst, GPIO_STEPPER_DEVICE_DATA_DEFINE);                              \
	DT_INST_FOREACH_CHILD(inst, GPIO_STEPPER_API_DEFINE);                                      \
	DT_INST_FOREACH_CHILD(inst, GPIO_STEPPER_DEVICE_DEFINE);

DT_INST_FOREACH_STATUS_OKAY(GPIO_STEPPER_CONTROLLER_DEFINE)
	static const struct gpio_stepper_config gpio_stepper_config_##inst = {			\
		.invert_direction = DT_INST_PROP(inst, invert_direction),			\
		.control_pins = gpio_stepper_motor_control_pins_##inst};			\
	static struct gpio_stepper_data gpio_stepper_data_##inst = {				\
		.step_gap = MAX_MICRO_STEP_RES >> (DT_INST_PROP(inst, micro_step_res) - 1),	\
	};											\
	BUILD_ASSERT(DT_INST_PROP(inst, micro_step_res) <= STEPPER_MICRO_STEP_2,		\
		     "gpio_stepper_controller driver supports up to 2 micro steps");		\
	DEVICE_DT_INST_DEFINE(inst, gpio_stepper_init, NULL, &gpio_stepper_data_##inst,		\
			      &gpio_stepper_config_##inst, POST_KERNEL,				\
			      CONFIG_STEPPER_INIT_PRIORITY, &gpio_stepper_api);

DT_INST_FOREACH_STATUS_OKAY(GPIO_STEPPER_DEFINE)
+1 −4
Changes for dts/bindings/stepper/adi/adi,tmc5041.yaml: 1 added line, 4 removed lines.
Original line number Diff line number Diff line
@@ -89,13 +89,10 @@ properties:

child-binding:
  include:
    - name: stepper-controller.yaml
    - name: base.yaml
      property-allowlist:
        - reg
    - name: stepper-controller.yaml
      property-allowlist:
        - invert-direction
        - micro-step-res
    - name: adi,trinamic-ramp-generator.yaml
      property-allowlist:
        - vstart
+0 −2
Changes for dts/bindings/stepper/stepper-controller.yaml: 0 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -3,8 +3,6 @@

description: Stepper Controller

include: base.yaml

properties:
  invert-direction:
    type: boolean
Loading