Commit 4f16b419 authored by Peter Bigot's avatar Peter Bigot Committed by Carles Cufi
Browse files

device: avoid casting away const from config_info pointer



The driver-specific config_info structure referenced from the device
structure is marked const.  Some drivers fail to preserve that
qualifier when casting the pointer to the driver-specific structure,
violating MISRA 11.8.

Changes produced by scripts/coccinelle/const_config_info.cocci.

Some changes proposed by the script are not included because they
reveal mutation of state through the const pointer, though the
code works as long as the driver-specific object is defined without
the const qualifier.

Signed-off-by: default avatarPeter Bigot <peter.bigot@nordicsemi.no>
parent 49e8c708
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -389,8 +389,8 @@ static void adc_stm32_isr(void *arg)
{
	struct device *dev = (struct device *)arg;
	struct adc_stm32_data *data = (struct adc_stm32_data *)dev->driver_data;
	struct adc_stm32_cfg *config =
		(struct adc_stm32_cfg *)dev->config_info;
	const struct adc_stm32_cfg *config =
		(const struct adc_stm32_cfg *)dev->config_info;
	ADC_TypeDef *adc = config->base;

	*data->buffer++ = LL_ADC_REG_ReadConversionData32(adc);
@@ -449,8 +449,8 @@ static int adc_stm32_check_acq_time(u16_t acq_time)
static void adc_stm32_setup_speed(struct device *dev, u8_t id,
				  u8_t acq_time_index)
{
	struct adc_stm32_cfg *config =
		(struct adc_stm32_cfg *)dev->config_info;
	const struct adc_stm32_cfg *config =
		(const struct adc_stm32_cfg *)dev->config_info;
	ADC_TypeDef *adc = config->base;

#if defined(CONFIG_SOC_SERIES_STM32F0X) || defined(CONFIG_SOC_SERIES_STM32L0X)
@@ -522,8 +522,8 @@ static int adc_stm32_channel_setup(struct device *dev,
	!defined(CONFIG_SOC_SERIES_STM32L1X)
static void adc_stm32_calib(struct device *dev)
{
	struct adc_stm32_cfg *config =
		(struct adc_stm32_cfg *)dev->config_info;
	const struct adc_stm32_cfg *config =
		(const struct adc_stm32_cfg *)dev->config_info;
	ADC_TypeDef *adc = config->base;

#if defined(CONFIG_SOC_SERIES_STM32F3X) || \
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ extern "C" {
#define MPXXDTYY_MAX_PDM_FREQ		3250000 /* 3.25MHz */

#define DEV_CFG(dev) \
	((struct mpxxdtyy_config *const)(dev)->config_info)
	((const struct mpxxdtyy_config *const)(dev)->config_info)
#define DEV_DATA(dev) \
	((struct mpxxdtyy_data *const)(dev)->driver_data)

+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ struct counter_gecko_data {

#define DEV_NAME(dev) ((dev)->name)
#define DEV_CFG(dev) \
	((struct counter_gecko_config * const)(dev)->config_info)
	((const struct counter_gecko_config * const)(dev)->config_info)
#define DEV_DATA(dev) \
	((struct counter_gecko_data *const)(dev)->driver_data)

+4 −4
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ static inline void sleep(u32_t sleep_in_ms)
 *******************************************/
void glcd_print(struct device *port, char *data, u32_t size)
{
	const struct glcd_driver * const rom = (struct glcd_driver *)
	const struct glcd_driver * const rom = (const struct glcd_driver *)
						port->config_info;
	struct glcd_data *dev = port->driver_data;
	u8_t buf[] = { GLCD_CMD_SET_CGRAM_ADDR, 0 };
@@ -119,7 +119,7 @@ void glcd_print(struct device *port, char *data, u32_t size)

void glcd_cursor_pos_set(struct device *port, u8_t col, u8_t row)
{
	const struct glcd_driver * const rom = (struct glcd_driver *)
	const struct glcd_driver * const rom = (const struct glcd_driver *)
						port->config_info;
	struct glcd_data *dev = port->driver_data;

@@ -140,7 +140,7 @@ void glcd_cursor_pos_set(struct device *port, u8_t col, u8_t row)

void glcd_clear(struct device *port)
{
	const struct glcd_driver * const rom = (struct glcd_driver *)
	const struct glcd_driver * const rom = (const struct glcd_driver *)
						port->config_info;
	struct glcd_data *dev = port->driver_data;
	u8_t clear[] = { 0, GLCD_CMD_SCREEN_CLEAR };
@@ -153,7 +153,7 @@ void glcd_clear(struct device *port)

void glcd_display_state_set(struct device *port, u8_t opt)
{
	const struct glcd_driver * const rom = (struct glcd_driver *)
	const struct glcd_driver * const rom = (const struct glcd_driver *)
						port->config_info;
	struct glcd_data *dev = port->driver_data;
	u8_t data[] = { 0, 0 };
+2 −2
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ struct entropy_stm32_rng_dev_data {
	((struct entropy_stm32_rng_dev_data *)(dev)->driver_data)

#define DEV_CFG(dev) \
	((struct entropy_stm32_rng_dev_cfg *)(dev)->config_info)
	((const struct entropy_stm32_rng_dev_cfg *)(dev)->config_info)

static void entropy_stm32_rng_reset(RNG_TypeDef *rng)
{
@@ -144,7 +144,7 @@ static int entropy_stm32_rng_get_entropy(struct device *dev, u8_t *buffer,
static int entropy_stm32_rng_init(struct device *dev)
{
	struct entropy_stm32_rng_dev_data *dev_data;
	struct entropy_stm32_rng_dev_cfg *dev_cfg;
	const struct entropy_stm32_rng_dev_cfg *dev_cfg;
	int res;

	__ASSERT_NO_MSG(dev != NULL);
Loading