Commit a34a5885 authored by Armando Visconti's avatar Armando Visconti Committed by Maureen Helm
Browse files

driver/sensor: lis2mdl: change order of operations in trigger init



Creation of callback thread is moved before the enabling of
the callback itself.

Signed-off-by: default avatarArmando Visconti <armando.visconti@st.com>
parent 89199dcb
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -130,19 +130,6 @@ int lis2mdl_init_interrupt(struct device *dev)
		return -EINVAL;
	}

	gpio_pin_configure(lis2mdl->gpio, config->gpio_pin,
			   GPIO_DIR_IN | GPIO_INT | GPIO_INT_EDGE |
			   GPIO_INT_ACTIVE_HIGH | GPIO_INT_DEBOUNCE);

	gpio_init_callback(&lis2mdl->gpio_cb,
			   lis2mdl_gpio_callback,
			   BIT(config->gpio_pin));

	if (gpio_add_callback(lis2mdl->gpio, &lis2mdl->gpio_cb) < 0) {
		LOG_DBG("Could not set gpio callback");
		return -EIO;
	}

#if defined(CONFIG_LIS2MDL_TRIGGER_OWN_THREAD)
	k_sem_init(&lis2mdl->gpio_sem, 0, UINT_MAX);
	k_thread_create(&lis2mdl->thread, lis2mdl->thread_stack,
@@ -155,7 +142,18 @@ int lis2mdl_init_interrupt(struct device *dev)
	lis2mdl->dev = dev;
#endif

	gpio_pin_enable_callback(lis2mdl->gpio, config->gpio_pin);
	gpio_pin_configure(lis2mdl->gpio, config->gpio_pin,
			   GPIO_DIR_IN | GPIO_INT | GPIO_INT_EDGE |
			   GPIO_INT_ACTIVE_HIGH | GPIO_INT_DEBOUNCE);

	gpio_init_callback(&lis2mdl->gpio_cb,
			   lis2mdl_gpio_callback,
			   BIT(config->gpio_pin));

	if (gpio_add_callback(lis2mdl->gpio, &lis2mdl->gpio_cb) < 0) {
		LOG_DBG("Could not set gpio callback");
		return -EIO;
	}

	return 0;
	return gpio_pin_enable_callback(lis2mdl->gpio, config->gpio_pin);
}