mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	IIO: stm32: Remove quadrature related functions from trigger driver
Quadrature feature is now hosted on it own framework. Remove quadrature related code from stm32-trigger driver to avoid code duplication and simplify the ABI. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
		
							parent
							
								
									0eec1f38c7
								
							
						
					
					
						commit
						b299d00420
					
				
					 2 changed files with 0 additions and 107 deletions
				
			
		| 
						 | 
				
			
			@ -91,29 +91,6 @@ Description:
 | 
			
		|||
		When counting down the counter start from preset value
 | 
			
		||||
		and fire event when reach 0.
 | 
			
		||||
 | 
			
		||||
What:		/sys/bus/iio/devices/iio:deviceX/in_count_quadrature_mode_available
 | 
			
		||||
KernelVersion:	4.12
 | 
			
		||||
Contact:	benjamin.gaignard@st.com
 | 
			
		||||
Description:
 | 
			
		||||
		Reading returns the list possible quadrature modes.
 | 
			
		||||
 | 
			
		||||
What:		/sys/bus/iio/devices/iio:deviceX/in_count0_quadrature_mode
 | 
			
		||||
KernelVersion:	4.12
 | 
			
		||||
Contact:	benjamin.gaignard@st.com
 | 
			
		||||
Description:
 | 
			
		||||
		Configure the device counter quadrature modes:
 | 
			
		||||
		channel_A:
 | 
			
		||||
			Encoder A input servers as the count input and B as
 | 
			
		||||
			the UP/DOWN direction control input.
 | 
			
		||||
 | 
			
		||||
		channel_B:
 | 
			
		||||
			Encoder B input serves as the count input and A as
 | 
			
		||||
			the UP/DOWN direction control input.
 | 
			
		||||
 | 
			
		||||
		quadrature:
 | 
			
		||||
			Encoder A and B inputs are mixed to get direction
 | 
			
		||||
			and count with a scale of 0.25.
 | 
			
		||||
 | 
			
		||||
What:		/sys/bus/iio/devices/iio:deviceX/in_count_enable_mode_available
 | 
			
		||||
KernelVersion:	4.12
 | 
			
		||||
Contact:	benjamin.gaignard@st.com
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -608,86 +608,6 @@ static const struct iio_enum stm32_enable_mode_enum = {
 | 
			
		|||
	.get = stm32_get_enable_mode
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const char *const stm32_quadrature_modes[] = {
 | 
			
		||||
	"channel_A",
 | 
			
		||||
	"channel_B",
 | 
			
		||||
	"quadrature",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int stm32_set_quadrature_mode(struct iio_dev *indio_dev,
 | 
			
		||||
				     const struct iio_chan_spec *chan,
 | 
			
		||||
				     unsigned int mode)
 | 
			
		||||
{
 | 
			
		||||
	struct stm32_timer_trigger *priv = iio_priv(indio_dev);
 | 
			
		||||
 | 
			
		||||
	regmap_update_bits(priv->regmap, TIM_SMCR, TIM_SMCR_SMS, mode + 1);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int stm32_get_quadrature_mode(struct iio_dev *indio_dev,
 | 
			
		||||
				     const struct iio_chan_spec *chan)
 | 
			
		||||
{
 | 
			
		||||
	struct stm32_timer_trigger *priv = iio_priv(indio_dev);
 | 
			
		||||
	u32 smcr;
 | 
			
		||||
	int mode;
 | 
			
		||||
 | 
			
		||||
	regmap_read(priv->regmap, TIM_SMCR, &smcr);
 | 
			
		||||
	mode = (smcr & TIM_SMCR_SMS) - 1;
 | 
			
		||||
	if ((mode < 0) || (mode > ARRAY_SIZE(stm32_quadrature_modes)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	return mode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct iio_enum stm32_quadrature_mode_enum = {
 | 
			
		||||
	.items = stm32_quadrature_modes,
 | 
			
		||||
	.num_items = ARRAY_SIZE(stm32_quadrature_modes),
 | 
			
		||||
	.set = stm32_set_quadrature_mode,
 | 
			
		||||
	.get = stm32_get_quadrature_mode
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const char *const stm32_count_direction_states[] = {
 | 
			
		||||
	"up",
 | 
			
		||||
	"down"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int stm32_set_count_direction(struct iio_dev *indio_dev,
 | 
			
		||||
				     const struct iio_chan_spec *chan,
 | 
			
		||||
				     unsigned int dir)
 | 
			
		||||
{
 | 
			
		||||
	struct stm32_timer_trigger *priv = iio_priv(indio_dev);
 | 
			
		||||
	u32 val;
 | 
			
		||||
	int mode;
 | 
			
		||||
 | 
			
		||||
	/* In encoder mode, direction is RO (given by TI1/TI2 signals) */
 | 
			
		||||
	regmap_read(priv->regmap, TIM_SMCR, &val);
 | 
			
		||||
	mode = (val & TIM_SMCR_SMS) - 1;
 | 
			
		||||
	if ((mode >= 0) || (mode < ARRAY_SIZE(stm32_quadrature_modes)))
 | 
			
		||||
		return -EBUSY;
 | 
			
		||||
 | 
			
		||||
	return regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_DIR,
 | 
			
		||||
				  dir ? TIM_CR1_DIR : 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int stm32_get_count_direction(struct iio_dev *indio_dev,
 | 
			
		||||
				     const struct iio_chan_spec *chan)
 | 
			
		||||
{
 | 
			
		||||
	struct stm32_timer_trigger *priv = iio_priv(indio_dev);
 | 
			
		||||
	u32 cr1;
 | 
			
		||||
 | 
			
		||||
	regmap_read(priv->regmap, TIM_CR1, &cr1);
 | 
			
		||||
 | 
			
		||||
	return ((cr1 & TIM_CR1_DIR) ? 1 : 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct iio_enum stm32_count_direction_enum = {
 | 
			
		||||
	.items = stm32_count_direction_states,
 | 
			
		||||
	.num_items = ARRAY_SIZE(stm32_count_direction_states),
 | 
			
		||||
	.set = stm32_set_count_direction,
 | 
			
		||||
	.get = stm32_get_count_direction
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static ssize_t stm32_count_get_preset(struct iio_dev *indio_dev,
 | 
			
		||||
				      uintptr_t private,
 | 
			
		||||
				      const struct iio_chan_spec *chan,
 | 
			
		||||
| 
						 | 
				
			
			@ -728,10 +648,6 @@ static const struct iio_chan_spec_ext_info stm32_trigger_count_info[] = {
 | 
			
		|||
		.read = stm32_count_get_preset,
 | 
			
		||||
		.write = stm32_count_set_preset
 | 
			
		||||
	},
 | 
			
		||||
	IIO_ENUM("count_direction", IIO_SEPARATE, &stm32_count_direction_enum),
 | 
			
		||||
	IIO_ENUM_AVAILABLE("count_direction", &stm32_count_direction_enum),
 | 
			
		||||
	IIO_ENUM("quadrature_mode", IIO_SEPARATE, &stm32_quadrature_mode_enum),
 | 
			
		||||
	IIO_ENUM_AVAILABLE("quadrature_mode", &stm32_quadrature_mode_enum),
 | 
			
		||||
	IIO_ENUM("enable_mode", IIO_SEPARATE, &stm32_enable_mode_enum),
 | 
			
		||||
	IIO_ENUM_AVAILABLE("enable_mode", &stm32_enable_mode_enum),
 | 
			
		||||
	IIO_ENUM("trigger_mode", IIO_SEPARATE, &stm32_trigger_mode_enum),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue