# BMI160 using both INTerrupts

**URL:** <https://forum.legato.io/t/bmi160-using-both-interrupts/6240>\
**Category:** Uncategorized\
**Created:** [June 29, 2022, 9:15pm UTC](https://forum.legato.io/t/bmi160-using-both-interrupts/6240 "2022-06-29T21:15:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![gi1](https://avatars.discourse-cdn.com/v4/letter/g/e79b87/32.png) [@gi1](https://forum.legato.io/u/gi1)\
**Post date:** [June 29, 2022, 9:15pm UTC](https://forum.legato.io/t/bmi160-using-both-interrupts/6240/1 "2022-06-29T21:15:10Z")

</div>

Hello,  
starting from standard kernel module from MangoH, I’m tring to enable both INTerrupts of BMI160,  
INT1 must signal anymotion/significant motion  
INT2 must signal Step Detect

I’ve added parts in bold to following code, but it seems not working… someone maybe already done and can help.

Regads,  
Gian

```auto
static int bmi160_setup_sigmot_int(struct bmi160_data *data) {
	
    int ret = 0;
	Route any motion/significant motion interrupt to int1 
	ret = regmap_write(
		data->regmap,
		BMI160_REG_INT_MAP_0,
		BMI160_INT_MAP_0_INT1_ANYM_SIGMOT); //route anymotion to INT1
	if (ret < 0)
		return ret;

	ret = regmap_write(
		data->regmap,
		BMI160_REG_INT_MAP_1,
		0);
	if (ret < 0)
		return ret;

        Route Single Tap interrupt to int2 
	ret = regmap_write(
		data->regmap,
		BMI160_REG_INT_MAP_2,
		BMI160_INT_MAP_2_INT2_STAP); //route single tap to INT2
	if (ret < 0)
		return ret;

	ret = regmap_write(
		data->regmap,
		BMI160_REG_INT_LATCH,
		(FIELD_PREP(BMI160_INT_LATCH_MODE,
			    BMI160_INT_LATCH_MODE_TMP_2560_MS)));
	if (ret < 0)
		return ret;

	//Enable edge interrupt on INT1 pin
	ret = regmap_write(
		data->regmap,
		BMI160_REG_INT_OUT_CTRL,
		(BMI160_INT_OUT_CTRL_INT1_EDGE |
		 BMI160_INT_OUT_CTRL_INT1_LVL |
		 BMI160_INT_OUT_CTRL_INT1_OUTPUT_EN));
	if (ret < 0)
		return ret;

	// Enable edge interrupt on INT2 pin 
	ret = regmap_write(
		data->regmap,
		BMI160_REG_INT_OUT_CTRL,
		(BMI160_INT_OUT_CTRL_INT2_EDGE |
		 BMI160_INT_OUT_CTRL_INT2_LVL |
		 BMI160_INT_OUT_CTRL_INT2_OUTPUT_EN));
	if (ret < 0)
		return ret;

	ret = regmap_write(
		data->regmap,
		BMI160_REG_INT_EN_0,
		(BMI160_INT_EN_0_ANYM_X|
		 BMI160_INT_EN_0_ANYM_Y|
		 BMI160_INT_EN_0_ANYM_Z));
	if (ret < 0)
		return ret;

	return ret;
}

```
