/linux-4.1.27/drivers/iio/common/hid-sensors/ |
H A D | Makefile | 2 # Makefile for the Hid sensor common modules. 5 obj-$(CONFIG_HID_SENSOR_IIO_COMMON) += hid-sensor-iio-common.o 6 obj-$(CONFIG_HID_SENSOR_IIO_TRIGGER) += hid-sensor-trigger.o 7 hid-sensor-iio-common-y := hid-sensor-attributes.o
|
H A D | hid-sensor-trigger.c | 26 #include <linux/hid-sensor-hub.h> 30 #include "hid-sensor-trigger.h"
|
/linux-4.1.27/drivers/media/usb/stkwebcam/ |
H A D | Makefile | 1 stkwebcam-objs := stk-webcam.o stk-sensor.o
|
H A D | stk-sensor.c | 1 /* stk-sensor.c: Driver for ov96xx sensor (used in some Syntek webcams) 28 /* Controlling the sensor via the STK1125 vendor specific control interface: 29 * The camera uses an OmniVision sensor and the stk1125 provides an 30 * SCCB(i2c)-USB bridge which let us program the sensor. 31 * In my case the sensor id is 0x9652, it can be read from sensor's register 58 * when it is 0x00 or 0x01, we cannot talk to the sensor, 66 * sensor in multiple places, attempting a reset sequence. 364 /* Probe the I2C bus and initialise the sensor chip */ stk_sensor_init() 380 STK_ERROR("Strange error reading sensor ID\n"); stk_sensor_init() 384 STK_ERROR("Huh? you don't have a sensor from ovt\n"); stk_sensor_init() 389 STK_ERROR("Could not read sensor model\n"); stk_sensor_init() 394 STK_INFO("OmniVision sensor detected, id %02X%02X" stk_sensor_init() 504 * We setup the sensor to output dummy lines in low-res modes, stk_sensor_configure() 554 /*FIXME sometimes the sensor go to a bad state stk_sensor_configure() 577 /*FIXME These settings seem ignored by the sensor stk_sensor_configure()
|
/linux-4.1.27/drivers/thermal/st/ |
H A D | st_thermal.c | 28 static int st_thermal_alloc_regfields(struct st_thermal_sensor *sensor) st_thermal_alloc_regfields() argument 30 struct device *dev = sensor->dev; st_thermal_alloc_regfields() 31 struct regmap *regmap = sensor->regmap; st_thermal_alloc_regfields() 32 const struct reg_field *reg_fields = sensor->cdata->reg_fields; st_thermal_alloc_regfields() 34 sensor->dcorrect = devm_regmap_field_alloc(dev, regmap, st_thermal_alloc_regfields() 37 sensor->overflow = devm_regmap_field_alloc(dev, regmap, st_thermal_alloc_regfields() 40 sensor->temp_data = devm_regmap_field_alloc(dev, regmap, st_thermal_alloc_regfields() 43 if (IS_ERR(sensor->dcorrect) || st_thermal_alloc_regfields() 44 IS_ERR(sensor->overflow) || st_thermal_alloc_regfields() 45 IS_ERR(sensor->temp_data)) { st_thermal_alloc_regfields() 50 return sensor->ops->alloc_regfields(sensor); st_thermal_alloc_regfields() 53 static int st_thermal_sensor_on(struct st_thermal_sensor *sensor) st_thermal_sensor_on() argument 56 struct device *dev = sensor->dev; st_thermal_sensor_on() 58 ret = clk_prepare_enable(sensor->clk); st_thermal_sensor_on() 64 ret = sensor->ops->power_ctrl(sensor, POWER_ON); st_thermal_sensor_on() 66 dev_err(dev, "failed to power on sensor\n"); st_thermal_sensor_on() 67 clk_disable_unprepare(sensor->clk); st_thermal_sensor_on() 73 static int st_thermal_sensor_off(struct st_thermal_sensor *sensor) st_thermal_sensor_off() argument 77 ret = sensor->ops->power_ctrl(sensor, POWER_OFF); st_thermal_sensor_off() 81 clk_disable_unprepare(sensor->clk); st_thermal_sensor_off() 86 static int st_thermal_calibration(struct st_thermal_sensor *sensor) st_thermal_calibration() argument 90 struct device *dev = sensor->dev; st_thermal_calibration() 92 /* Check if sensor calibration data is already written */ st_thermal_calibration() 93 ret = regmap_field_read(sensor->dcorrect, &val); st_thermal_calibration() 104 ret = regmap_field_write(sensor->dcorrect, st_thermal_calibration() 105 sensor->cdata->calibration_val); st_thermal_calibration() 117 struct st_thermal_sensor *sensor = th->devdata; st_thermal_get_temp() local 118 struct device *dev = sensor->dev; st_thermal_get_temp() 123 ret = regmap_field_read(sensor->overflow, &overflow); st_thermal_get_temp() 129 ret = regmap_field_read(sensor->temp_data, &temp); st_thermal_get_temp() 133 temp += sensor->cdata->temp_adjust_val; st_thermal_get_temp() 146 struct st_thermal_sensor *sensor = th->devdata; st_thermal_get_trip_type() local 147 struct device *dev = sensor->dev; st_thermal_get_trip_type() 164 struct st_thermal_sensor *sensor = th->devdata; st_thermal_get_trip_temp() local 165 struct device *dev = sensor->dev; st_thermal_get_trip_temp() 169 *temp = mcelsius(sensor->cdata->crit_temp); st_thermal_get_trip_temp() 188 struct st_thermal_sensor *sensor; st_thermal_register() local 201 sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL); st_thermal_register() 202 if (!sensor) st_thermal_register() 205 sensor->dev = dev; st_thermal_register() 211 sensor->cdata = match->data; st_thermal_register() 212 if (!sensor->cdata->ops) st_thermal_register() 215 sensor->ops = sensor->cdata->ops; st_thermal_register() 217 ret = sensor->ops->regmap_init(sensor); st_thermal_register() 221 ret = st_thermal_alloc_regfields(sensor); st_thermal_register() 225 sensor->clk = devm_clk_get(dev, "thermal"); st_thermal_register() 226 if (IS_ERR(sensor->clk)) { st_thermal_register() 228 return PTR_ERR(sensor->clk); st_thermal_register() 231 if (sensor->ops->register_enable_irq) { st_thermal_register() 232 ret = sensor->ops->register_enable_irq(sensor); st_thermal_register() 237 ret = st_thermal_sensor_on(sensor); st_thermal_register() 241 ret = st_thermal_calibration(sensor); st_thermal_register() 245 polling_delay = sensor->ops->register_enable_irq ? 0 : 1000; st_thermal_register() 247 sensor->thermal_dev = st_thermal_register() 248 thermal_zone_device_register(dev_name(dev), 1, 0, sensor, st_thermal_register() 250 if (IS_ERR(sensor->thermal_dev)) { st_thermal_register() 252 ret = PTR_ERR(sensor->thermal_dev); st_thermal_register() 256 platform_set_drvdata(pdev, sensor); st_thermal_register() 261 st_thermal_sensor_off(sensor); st_thermal_register() 269 struct st_thermal_sensor *sensor = platform_get_drvdata(pdev); st_thermal_unregister() local 271 st_thermal_sensor_off(sensor); st_thermal_unregister() 272 thermal_zone_device_unregister(sensor->thermal_dev); st_thermal_unregister() 282 struct st_thermal_sensor *sensor = platform_get_drvdata(pdev); st_thermal_suspend() local 284 return st_thermal_sensor_off(sensor); st_thermal_suspend() 291 struct st_thermal_sensor *sensor = platform_get_drvdata(pdev); st_thermal_resume() local 293 ret = st_thermal_sensor_on(sensor); st_thermal_resume() 297 ret = st_thermal_calibration(sensor); st_thermal_resume() 301 if (sensor->ops->enable_irq) { st_thermal_resume() 302 ret = sensor->ops->enable_irq(sensor); st_thermal_resume()
|
H A D | st_thermal_memmap.c | 23 /* Power control bits for the memory mapped thermal sensor */ 29 * According to the STIH416 MPE temp sensor data sheet - 32 * sensor. regmap_update_bits() will be used to update the register. 43 struct st_thermal_sensor *sensor = sdata; st_mmap_thermal_trip_handler() local 45 thermal_zone_device_update(sensor->thermal_dev); st_mmap_thermal_trip_handler() 51 static int st_mmap_power_ctrl(struct st_thermal_sensor *sensor, st_mmap_power_ctrl() argument 57 return regmap_update_bits(sensor->regmap, STIH416_MPE_CONF, mask, val); st_mmap_power_ctrl() 60 static int st_mmap_alloc_regfields(struct st_thermal_sensor *sensor) st_mmap_alloc_regfields() argument 62 struct device *dev = sensor->dev; st_mmap_alloc_regfields() 63 struct regmap *regmap = sensor->regmap; st_mmap_alloc_regfields() 64 const struct reg_field *reg_fields = sensor->cdata->reg_fields; st_mmap_alloc_regfields() 66 sensor->int_thresh_hi = devm_regmap_field_alloc(dev, regmap, st_mmap_alloc_regfields() 68 sensor->int_enable = devm_regmap_field_alloc(dev, regmap, st_mmap_alloc_regfields() 71 if (IS_ERR(sensor->int_thresh_hi) || IS_ERR(sensor->int_enable)) { st_mmap_alloc_regfields() 79 static int st_mmap_enable_irq(struct st_thermal_sensor *sensor) st_mmap_enable_irq() argument 84 ret = regmap_field_write(sensor->int_thresh_hi, st_mmap_enable_irq() 85 sensor->cdata->crit_temp - st_mmap_enable_irq() 86 sensor->cdata->temp_adjust_val); st_mmap_enable_irq() 90 return regmap_field_write(sensor->int_enable, 1); st_mmap_enable_irq() 93 static int st_mmap_register_enable_irq(struct st_thermal_sensor *sensor) st_mmap_register_enable_irq() argument 95 struct device *dev = sensor->dev; st_mmap_register_enable_irq() 99 sensor->irq = platform_get_irq(pdev, 0); st_mmap_register_enable_irq() 100 if (sensor->irq < 0) { st_mmap_register_enable_irq() 102 return sensor->irq; st_mmap_register_enable_irq() 105 ret = devm_request_threaded_irq(dev, sensor->irq, st_mmap_register_enable_irq() 108 dev->driver->name, sensor); st_mmap_register_enable_irq() 110 dev_err(dev, "failed to register IRQ %d\n", sensor->irq); st_mmap_register_enable_irq() 114 return st_mmap_enable_irq(sensor); st_mmap_register_enable_irq() 123 static int st_mmap_regmap_init(struct st_thermal_sensor *sensor) st_mmap_regmap_init() argument 125 struct device *dev = sensor->dev; st_mmap_regmap_init() 135 sensor->mmio_base = devm_ioremap_resource(dev, res); st_mmap_regmap_init() 136 if (IS_ERR(sensor->mmio_base)) { st_mmap_regmap_init() 138 return PTR_ERR(sensor->mmio_base); st_mmap_regmap_init() 141 sensor->regmap = devm_regmap_init_mmio(dev, sensor->mmio_base, st_mmap_regmap_init() 143 if (IS_ERR(sensor->regmap)) { st_mmap_regmap_init() 145 return PTR_ERR(sensor->regmap); st_mmap_regmap_init() 159 /* Compatible device data stih416 mpe thermal sensor */ 168 /* Compatible device data stih407 thermal sensor */
|
H A D | st_thermal_syscfg.c | 67 static int st_syscfg_power_ctrl(struct st_thermal_sensor *sensor, st_syscfg_power_ctrl() argument 70 return regmap_field_write(sensor->pwr, power_state); st_syscfg_power_ctrl() 73 static int st_syscfg_alloc_regfields(struct st_thermal_sensor *sensor) st_syscfg_alloc_regfields() argument 75 struct device *dev = sensor->dev; st_syscfg_alloc_regfields() 77 sensor->pwr = devm_regmap_field_alloc(dev, sensor->regmap, st_syscfg_alloc_regfields() 78 sensor->cdata->reg_fields[TEMP_PWR]); st_syscfg_alloc_regfields() 80 if (IS_ERR(sensor->pwr)) { st_syscfg_alloc_regfields() 82 return PTR_ERR(sensor->pwr); st_syscfg_alloc_regfields() 88 static int st_syscfg_regmap_init(struct st_thermal_sensor *sensor) st_syscfg_regmap_init() argument 90 sensor->regmap = st_syscfg_regmap_init() 91 syscon_regmap_lookup_by_compatible(sensor->cdata->sys_compat); st_syscfg_regmap_init() 92 if (IS_ERR(sensor->regmap)) { st_syscfg_regmap_init() 93 dev_err(sensor->dev, "failed to find syscfg regmap\n"); st_syscfg_regmap_init() 94 return PTR_ERR(sensor->regmap); st_syscfg_regmap_init() 106 /* Compatible device data for stih415 sas thermal sensor */ 116 /* Compatible device data for stih415 mpe thermal sensor */ 126 /* Compatible device data for stih416 sas thermal sensor */ 136 /* Compatible device data for stid127 thermal sensor */
|
H A D | st_thermal.h | 32 /* Thermal sensor power states */ 41 * Description of private thermal sensor ops. 43 * @power_ctrl: Function for powering on/off a sensor. Clock to the 44 * sensor is also controlled from this function. 45 * @alloc_regfields: Allocate regmap register fields, specific to a sensor. 48 * @register_irq: Register an interrupt handler for a sensor. 61 * @reg_fields: Pointer to the regfields array for a sensor. 63 * @ops: Pointer to private thermal ops for a sensor. 65 * register field for a sensor. 67 * the sensor. If value needs to be added please provide a
|
/linux-4.1.27/drivers/media/i2c/ |
H A D | s5k6a3.c | 2 * Samsung S5K6A3 image sensor driver 48 * struct s5k6a3 - fimc-is sensor data structure 50 * @subdev: the image sensor's v4l2 subdev 52 * @supplies: image sensor's voltage regulator supplies 53 * @gpio_reset: GPIO connected to the sensor's reset pin 55 * @format: media bus format at the sensor's source pad 126 struct s5k6a3 *sensor, struct v4l2_subdev_pad_config *cfg, __s5k6a3_get_format() 130 return cfg ? v4l2_subdev_get_try_format(&sensor->subdev, cfg, pad) : NULL; __s5k6a3_get_format() 132 return &sensor->format; __s5k6a3_get_format() 139 struct s5k6a3 *sensor = sd_to_s5k6a3(sd); s5k6a3_set_fmt() local 144 mf = __s5k6a3_get_format(sensor, cfg, fmt->pad, fmt->which); s5k6a3_set_fmt() 146 mutex_lock(&sensor->lock); s5k6a3_set_fmt() 149 mutex_unlock(&sensor->lock); s5k6a3_set_fmt() 158 struct s5k6a3 *sensor = sd_to_s5k6a3(sd); s5k6a3_get_fmt() local 161 mf = __s5k6a3_get_format(sensor, cfg, fmt->pad, fmt->which); s5k6a3_get_fmt() 163 mutex_lock(&sensor->lock); s5k6a3_get_fmt() 165 mutex_unlock(&sensor->lock); s5k6a3_get_fmt() 190 static int __s5k6a3_power_on(struct s5k6a3 *sensor) __s5k6a3_power_on() argument 195 ret = clk_set_rate(sensor->clock, sensor->clock_frequency); __s5k6a3_power_on() 199 ret = pm_runtime_get(sensor->dev); __s5k6a3_power_on() 203 ret = regulator_enable(sensor->supplies[i].consumer); __s5k6a3_power_on() 207 ret = clk_prepare_enable(sensor->clock); __s5k6a3_power_on() 212 ret = regulator_enable(sensor->supplies[i].consumer); __s5k6a3_power_on() 217 gpio_set_value(sensor->gpio_reset, 1); __s5k6a3_power_on() 219 gpio_set_value(sensor->gpio_reset, 0); __s5k6a3_power_on() 221 gpio_set_value(sensor->gpio_reset, 1); __s5k6a3_power_on() 223 /* Delay needed for the sensor initialization */ __s5k6a3_power_on() 229 regulator_disable(sensor->supplies[i].consumer); __s5k6a3_power_on() 231 pm_runtime_put(sensor->dev); __s5k6a3_power_on() 235 static int __s5k6a3_power_off(struct s5k6a3 *sensor) __s5k6a3_power_off() argument 239 gpio_set_value(sensor->gpio_reset, 0); __s5k6a3_power_off() 242 regulator_disable(sensor->supplies[i].consumer); __s5k6a3_power_off() 244 clk_disable_unprepare(sensor->clock); __s5k6a3_power_off() 245 pm_runtime_put(sensor->dev); __s5k6a3_power_off() 251 struct s5k6a3 *sensor = sd_to_s5k6a3(sd); s5k6a3_s_power() local 254 mutex_lock(&sensor->lock); s5k6a3_s_power() 256 if (sensor->power_count == !on) { s5k6a3_s_power() 258 ret = __s5k6a3_power_on(sensor); s5k6a3_s_power() 260 ret = __s5k6a3_power_off(sensor); s5k6a3_s_power() 263 sensor->power_count += on ? 1 : -1; s5k6a3_s_power() 266 mutex_unlock(&sensor->lock); s5k6a3_s_power() 283 struct s5k6a3 *sensor; s5k6a3_probe() local 287 sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL); s5k6a3_probe() 288 if (!sensor) s5k6a3_probe() 291 mutex_init(&sensor->lock); s5k6a3_probe() 292 sensor->gpio_reset = -EINVAL; s5k6a3_probe() 293 sensor->clock = ERR_PTR(-EINVAL); s5k6a3_probe() 294 sensor->dev = dev; s5k6a3_probe() 296 sensor->clock = devm_clk_get(sensor->dev, S5K6A3_CLK_NAME); s5k6a3_probe() 297 if (IS_ERR(sensor->clock)) s5k6a3_probe() 298 return PTR_ERR(sensor->clock); s5k6a3_probe() 309 sensor->gpio_reset = gpio; s5k6a3_probe() 312 &sensor->clock_frequency)) { s5k6a3_probe() 313 sensor->clock_frequency = S5K6A3_DEFAULT_CLK_FREQ; s5k6a3_probe() 315 sensor->clock_frequency); s5k6a3_probe() 319 sensor->supplies[i].supply = s5k6a3_supply_names[i]; s5k6a3_probe() 322 sensor->supplies); s5k6a3_probe() 326 sd = &sensor->subdev; s5k6a3_probe() 328 sensor->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; s5k6a3_probe() 331 sensor->format.code = s5k6a3_formats[0].code; s5k6a3_probe() 332 sensor->format.width = S5K6A3_DEFAULT_WIDTH; s5k6a3_probe() 333 sensor->format.height = S5K6A3_DEFAULT_HEIGHT; s5k6a3_probe() 335 sensor->pad.flags = MEDIA_PAD_FL_SOURCE; s5k6a3_probe() 336 ret = media_entity_init(&sd->entity, 1, &sensor->pad, 0); s5k6a3_probe() 388 MODULE_DESCRIPTION("S5K6A3 image sensor subdev driver"); 125 __s5k6a3_get_format( struct s5k6a3 *sensor, struct v4l2_subdev_pad_config *cfg, u32 pad, enum v4l2_subdev_format_whence which) __s5k6a3_get_format() argument
|
H A D | mt9m032.c | 138 * for this sensor. 168 #define to_dev(sensor) \ 169 (&((struct i2c_client *)v4l2_get_subdevdata(&(sensor)->subdev))->dev) 181 static u32 mt9m032_row_time(struct mt9m032 *sensor, unsigned int width) mt9m032_row_time() argument 187 ns = div_u64(1000000000ULL * effective_width, sensor->pix_clock); mt9m032_row_time() 188 dev_dbg(to_dev(sensor), "MT9M032 line time: %u ns\n", ns); mt9m032_row_time() 192 static int mt9m032_update_timing(struct mt9m032 *sensor, mt9m032_update_timing() argument 195 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); mt9m032_update_timing() 196 struct v4l2_rect *crop = &sensor->crop; mt9m032_update_timing() 202 interval = &sensor->frame_interval; mt9m032_update_timing() 204 row_time = mt9m032_row_time(sensor, crop->width); mt9m032_update_timing() 228 static int mt9m032_update_geom_timing(struct mt9m032 *sensor) mt9m032_update_geom_timing() argument 230 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); mt9m032_update_geom_timing() 234 sensor->crop.width - 1); mt9m032_update_geom_timing() 237 sensor->crop.height - 1); mt9m032_update_geom_timing() 240 sensor->crop.left); mt9m032_update_geom_timing() 243 sensor->crop.top); mt9m032_update_geom_timing() 245 ret = mt9m032_update_timing(sensor, NULL); mt9m032_update_geom_timing() 249 static int update_formatter2(struct mt9m032 *sensor, bool streaming) update_formatter2() argument 251 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); update_formatter2() 262 static int mt9m032_setup_pll(struct mt9m032 *sensor) mt9m032_setup_pll() argument 280 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); mt9m032_setup_pll() 281 struct mt9m032_platform_data *pdata = sensor->pdata; mt9m032_setup_pll() 293 sensor->pix_clock = pdata->pix_clock; mt9m032_setup_pll() 347 * @sensor: pointer to the sensor struct 354 __mt9m032_get_pad_crop(struct mt9m032 *sensor, struct v4l2_subdev_pad_config *cfg, __mt9m032_get_pad_crop() argument 359 return v4l2_subdev_get_try_crop(&sensor->subdev, cfg, 0); __mt9m032_get_pad_crop() 361 return &sensor->crop; __mt9m032_get_pad_crop() 369 * @sensor: pointer to the sensor struct 376 __mt9m032_get_pad_format(struct mt9m032 *sensor, struct v4l2_subdev_pad_config *cfg, __mt9m032_get_pad_format() argument 381 return v4l2_subdev_get_try_format(&sensor->subdev, cfg, 0); __mt9m032_get_pad_format() 383 return &sensor->format; __mt9m032_get_pad_format() 393 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_get_pad_format() local 395 mutex_lock(&sensor->lock); mt9m032_get_pad_format() 396 fmt->format = *__mt9m032_get_pad_format(sensor, cfg, fmt->which); mt9m032_get_pad_format() 397 mutex_unlock(&sensor->lock); mt9m032_get_pad_format() 406 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_set_pad_format() local 409 mutex_lock(&sensor->lock); mt9m032_set_pad_format() 411 if (sensor->streaming && fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) { mt9m032_set_pad_format() 417 fmt->format = *__mt9m032_get_pad_format(sensor, cfg, fmt->which); mt9m032_set_pad_format() 421 mutex_unlock(&sensor->lock); mt9m032_set_pad_format() 429 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_get_pad_selection() local 434 mutex_lock(&sensor->lock); mt9m032_get_pad_selection() 435 sel->r = *__mt9m032_get_pad_crop(sensor, cfg, sel->which); mt9m032_get_pad_selection() 436 mutex_unlock(&sensor->lock); mt9m032_get_pad_selection() 445 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_set_pad_selection() local 454 mutex_lock(&sensor->lock); mt9m032_set_pad_selection() 456 if (sensor->streaming && sel->which == V4L2_SUBDEV_FORMAT_ACTIVE) { mt9m032_set_pad_selection() 478 __crop = __mt9m032_get_pad_crop(sensor, cfg, sel->which); mt9m032_set_pad_selection() 484 format = __mt9m032_get_pad_format(sensor, cfg, sel->which); mt9m032_set_pad_selection() 493 ret = mt9m032_update_geom_timing(sensor); mt9m032_set_pad_selection() 496 mutex_unlock(&sensor->lock); mt9m032_set_pad_selection() 503 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_get_frame_interval() local 505 mutex_lock(&sensor->lock); mt9m032_get_frame_interval() 507 fi->interval = sensor->frame_interval; mt9m032_get_frame_interval() 508 mutex_unlock(&sensor->lock); mt9m032_get_frame_interval() 516 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_set_frame_interval() local 519 mutex_lock(&sensor->lock); mt9m032_set_frame_interval() 521 if (sensor->streaming) { mt9m032_set_frame_interval() 530 ret = mt9m032_update_timing(sensor, &fi->interval); mt9m032_set_frame_interval() 532 sensor->frame_interval = fi->interval; mt9m032_set_frame_interval() 535 mutex_unlock(&sensor->lock); mt9m032_set_frame_interval() 541 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_s_stream() local 544 mutex_lock(&sensor->lock); mt9m032_s_stream() 545 ret = update_formatter2(sensor, streaming); mt9m032_s_stream() 547 sensor->streaming = streaming; mt9m032_s_stream() 548 mutex_unlock(&sensor->lock); mt9m032_s_stream() 561 struct mt9m032 *sensor = to_mt9m032(sd); mt9m032_g_register() local 562 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); mt9m032_g_register() 581 struct mt9m032 *sensor = to_mt9m032(sd); mt9m032_s_register() local 582 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); mt9m032_s_register() 595 static int update_read_mode2(struct mt9m032 *sensor, bool vflip, bool hflip) update_read_mode2() argument 597 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); update_read_mode2() 606 static int mt9m032_set_gain(struct mt9m032 *sensor, s32 val) mt9m032_set_gain() argument 608 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); mt9m032_set_gain() 647 struct mt9m032 *sensor = mt9m032_set_ctrl() local 649 struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); mt9m032_set_ctrl() 654 return mt9m032_set_gain(sensor, ctrl->val); mt9m032_set_ctrl() 658 return update_read_mode2(sensor, sensor->vflip->val, mt9m032_set_ctrl() 659 sensor->hflip->val); mt9m032_set_ctrl() 718 struct mt9m032 *sensor; mt9m032_probe() local 736 sensor = devm_kzalloc(&client->dev, sizeof(*sensor), GFP_KERNEL); mt9m032_probe() 737 if (sensor == NULL) mt9m032_probe() 740 mutex_init(&sensor->lock); mt9m032_probe() 742 sensor->pdata = pdata; mt9m032_probe() 744 v4l2_i2c_subdev_init(&sensor->subdev, client, &mt9m032_ops); mt9m032_probe() 745 sensor->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; mt9m032_probe() 758 sensor->frame_interval.numerator = 1; mt9m032_probe() 759 sensor->frame_interval.denominator = 30; mt9m032_probe() 761 sensor->crop.left = MT9M032_COLUMN_START_DEF; mt9m032_probe() 762 sensor->crop.top = MT9M032_ROW_START_DEF; mt9m032_probe() 763 sensor->crop.width = MT9M032_COLUMN_SIZE_DEF; mt9m032_probe() 764 sensor->crop.height = MT9M032_ROW_SIZE_DEF; mt9m032_probe() 766 sensor->format.width = sensor->crop.width; mt9m032_probe() 767 sensor->format.height = sensor->crop.height; mt9m032_probe() 768 sensor->format.code = MEDIA_BUS_FMT_Y8_1X8; mt9m032_probe() 769 sensor->format.field = V4L2_FIELD_NONE; mt9m032_probe() 770 sensor->format.colorspace = V4L2_COLORSPACE_SRGB; mt9m032_probe() 772 v4l2_ctrl_handler_init(&sensor->ctrls, 5); mt9m032_probe() 774 v4l2_ctrl_new_std(&sensor->ctrls, &mt9m032_ctrl_ops, mt9m032_probe() 777 sensor->hflip = v4l2_ctrl_new_std(&sensor->ctrls, mt9m032_probe() 780 sensor->vflip = v4l2_ctrl_new_std(&sensor->ctrls, mt9m032_probe() 784 v4l2_ctrl_new_std(&sensor->ctrls, &mt9m032_ctrl_ops, mt9m032_probe() 788 v4l2_ctrl_new_std(&sensor->ctrls, &mt9m032_ctrl_ops, mt9m032_probe() 792 if (sensor->ctrls.error) { mt9m032_probe() 793 ret = sensor->ctrls.error; mt9m032_probe() 798 v4l2_ctrl_cluster(2, &sensor->hflip); mt9m032_probe() 800 sensor->subdev.ctrl_handler = &sensor->ctrls; mt9m032_probe() 801 sensor->pad.flags = MEDIA_PAD_FL_SOURCE; mt9m032_probe() 802 ret = media_entity_init(&sensor->subdev.entity, 1, &sensor->pad, 0); mt9m032_probe() 813 ret = mt9m032_setup_pll(sensor); mt9m032_probe() 818 ret = v4l2_ctrl_handler_setup(&sensor->ctrls); mt9m032_probe() 823 ret = mt9m032_update_geom_timing(sensor); mt9m032_probe() 839 if (sensor->pdata->invert_pixclock) { mt9m032_probe() 854 ret = update_formatter2(sensor, false); mt9m032_probe() 861 media_entity_cleanup(&sensor->subdev.entity); mt9m032_probe() 863 v4l2_ctrl_handler_free(&sensor->ctrls); mt9m032_probe() 865 mutex_destroy(&sensor->lock); mt9m032_probe() 872 struct mt9m032 *sensor = to_mt9m032(subdev); mt9m032_remove() local 875 v4l2_ctrl_handler_free(&sensor->ctrls); mt9m032_remove() 877 mutex_destroy(&sensor->lock); mt9m032_remove() 900 MODULE_DESCRIPTION("MT9M032 camera sensor driver");
|
H A D | vs6624.c | 2 * vs6624.c ST VS6624 CMOS image sensor driver 584 /* sensor mode is VGA */ vs6624_try_mbus_fmt() 599 struct vs6624 *sensor = to_vs6624(sd); vs6624_s_mbus_fmt() local 646 sensor->fmt = *fmt; vs6624_s_mbus_fmt() 654 struct vs6624 *sensor = to_vs6624(sd); vs6624_g_mbus_fmt() local 656 *fmt = sensor->fmt; vs6624_g_mbus_fmt() 662 struct vs6624 *sensor = to_vs6624(sd); vs6624_g_parm() local 670 cp->timeperframe.numerator = sensor->frame_rate.denominator; vs6624_g_parm() 671 cp->timeperframe.denominator = sensor->frame_rate.numerator; vs6624_g_parm() 677 struct vs6624 *sensor = to_vs6624(sd); vs6624_s_parm() local 692 sensor->frame_rate.numerator = tpf->denominator; vs6624_s_parm() 693 sensor->frame_rate.denominator = tpf->numerator; vs6624_s_parm() 696 sensor->frame_rate.numerator >> 8); vs6624_s_parm() 698 sensor->frame_rate.numerator & 0xFF); vs6624_s_parm() 700 sensor->frame_rate.denominator & 0xFF); vs6624_s_parm() 758 struct vs6624 *sensor; vs6624_probe() local 781 sensor = devm_kzalloc(&client->dev, sizeof(*sensor), GFP_KERNEL); vs6624_probe() 782 if (sensor == NULL) vs6624_probe() 785 sd = &sensor->sd; vs6624_probe() 799 sensor->frame_rate.numerator = MAX_FRAME_RATE; vs6624_probe() 800 sensor->frame_rate.denominator = 1; vs6624_probe() 803 sensor->frame_rate.numerator >> 8); vs6624_probe() 805 sensor->frame_rate.numerator & 0xFF); vs6624_probe() 807 sensor->frame_rate.denominator & 0xFF); vs6624_probe() 809 sensor->fmt = vs6624_default_fmt; vs6624_probe() 810 sensor->ce_pin = *ce; vs6624_probe() 815 hdl = &sensor->hdl; vs6624_probe() 869 MODULE_DESCRIPTION("VS6624 sensor driver");
|
H A D | ov7640.c | 25 MODULE_DESCRIPTION("OmniVision ov7640 sensor driver");
|
/linux-4.1.27/drivers/media/i2c/smiapp/ |
H A D | smiapp-core.c | 11 * Based on smia-sensor.c by Tuukka Toivonen <tuukkat76@gmail.com> 66 static int smiapp_read_frame_fmt(struct smiapp_sensor *sensor) smiapp_read_frame_fmt() argument 68 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_read_frame_fmt() 76 rval = smiapp_read(sensor, SMIAPP_REG_U8_FRAME_FORMAT_MODEL_TYPE, smiapp_read_frame_fmt() 81 rval = smiapp_read(sensor, SMIAPP_REG_U8_FRAME_FORMAT_MODEL_SUBTYPE, smiapp_read_frame_fmt() 107 sensor, smiapp_read_frame_fmt() 121 sensor, smiapp_read_frame_fmt() 178 || pixels >= sensor->limits[SMIAPP_LIMIT_MIN_FRAME_LENGTH_LINES] / 2) smiapp_read_frame_fmt() 198 static int smiapp_pll_configure(struct smiapp_sensor *sensor) smiapp_pll_configure() argument 200 struct smiapp_pll *pll = &sensor->pll; smiapp_pll_configure() 204 sensor, SMIAPP_REG_U16_VT_PIX_CLK_DIV, pll->vt.pix_clk_div); smiapp_pll_configure() 209 sensor, SMIAPP_REG_U16_VT_SYS_CLK_DIV, pll->vt.sys_clk_div); smiapp_pll_configure() 214 sensor, SMIAPP_REG_U16_PRE_PLL_CLK_DIV, pll->pre_pll_clk_div); smiapp_pll_configure() 219 sensor, SMIAPP_REG_U16_PLL_MULTIPLIER, pll->pll_multiplier); smiapp_pll_configure() 225 sensor, SMIAPP_REG_U32_REQUESTED_LINK_BIT_RATE_MBPS, smiapp_pll_configure() 227 if (rval < 0 || sensor->minfo.smiapp_profile == SMIAPP_PROFILE_0) smiapp_pll_configure() 231 sensor, SMIAPP_REG_U16_OP_PIX_CLK_DIV, pll->op.pix_clk_div); smiapp_pll_configure() 236 sensor, SMIAPP_REG_U16_OP_SYS_CLK_DIV, pll->op.sys_clk_div); smiapp_pll_configure() 239 static int smiapp_pll_try(struct smiapp_sensor *sensor, smiapp_pll_try() argument 242 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_pll_try() 244 .min_pre_pll_clk_div = sensor->limits[SMIAPP_LIMIT_MIN_PRE_PLL_CLK_DIV], smiapp_pll_try() 245 .max_pre_pll_clk_div = sensor->limits[SMIAPP_LIMIT_MAX_PRE_PLL_CLK_DIV], smiapp_pll_try() 246 .min_pll_ip_freq_hz = sensor->limits[SMIAPP_LIMIT_MIN_PLL_IP_FREQ_HZ], smiapp_pll_try() 247 .max_pll_ip_freq_hz = sensor->limits[SMIAPP_LIMIT_MAX_PLL_IP_FREQ_HZ], smiapp_pll_try() 248 .min_pll_multiplier = sensor->limits[SMIAPP_LIMIT_MIN_PLL_MULTIPLIER], smiapp_pll_try() 249 .max_pll_multiplier = sensor->limits[SMIAPP_LIMIT_MAX_PLL_MULTIPLIER], smiapp_pll_try() 250 .min_pll_op_freq_hz = sensor->limits[SMIAPP_LIMIT_MIN_PLL_OP_FREQ_HZ], smiapp_pll_try() 251 .max_pll_op_freq_hz = sensor->limits[SMIAPP_LIMIT_MAX_PLL_OP_FREQ_HZ], smiapp_pll_try() 253 .op.min_sys_clk_div = sensor->limits[SMIAPP_LIMIT_MIN_OP_SYS_CLK_DIV], smiapp_pll_try() 254 .op.max_sys_clk_div = sensor->limits[SMIAPP_LIMIT_MAX_OP_SYS_CLK_DIV], smiapp_pll_try() 255 .op.min_pix_clk_div = sensor->limits[SMIAPP_LIMIT_MIN_OP_PIX_CLK_DIV], smiapp_pll_try() 256 .op.max_pix_clk_div = sensor->limits[SMIAPP_LIMIT_MAX_OP_PIX_CLK_DIV], smiapp_pll_try() 257 .op.min_sys_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MIN_OP_SYS_CLK_FREQ_HZ], smiapp_pll_try() 258 .op.max_sys_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MAX_OP_SYS_CLK_FREQ_HZ], smiapp_pll_try() 259 .op.min_pix_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MIN_OP_PIX_CLK_FREQ_HZ], smiapp_pll_try() 260 .op.max_pix_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MAX_OP_PIX_CLK_FREQ_HZ], smiapp_pll_try() 262 .vt.min_sys_clk_div = sensor->limits[SMIAPP_LIMIT_MIN_VT_SYS_CLK_DIV], smiapp_pll_try() 263 .vt.max_sys_clk_div = sensor->limits[SMIAPP_LIMIT_MAX_VT_SYS_CLK_DIV], smiapp_pll_try() 264 .vt.min_pix_clk_div = sensor->limits[SMIAPP_LIMIT_MIN_VT_PIX_CLK_DIV], smiapp_pll_try() 265 .vt.max_pix_clk_div = sensor->limits[SMIAPP_LIMIT_MAX_VT_PIX_CLK_DIV], smiapp_pll_try() 266 .vt.min_sys_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MIN_VT_SYS_CLK_FREQ_HZ], smiapp_pll_try() 267 .vt.max_sys_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MAX_VT_SYS_CLK_FREQ_HZ], smiapp_pll_try() 268 .vt.min_pix_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MIN_VT_PIX_CLK_FREQ_HZ], smiapp_pll_try() 269 .vt.max_pix_clk_freq_hz = sensor->limits[SMIAPP_LIMIT_MAX_VT_PIX_CLK_FREQ_HZ], smiapp_pll_try() 271 .min_line_length_pck_bin = sensor->limits[SMIAPP_LIMIT_MIN_LINE_LENGTH_PCK_BIN], smiapp_pll_try() 272 .min_line_length_pck = sensor->limits[SMIAPP_LIMIT_MIN_LINE_LENGTH_PCK], smiapp_pll_try() 278 static int smiapp_pll_update(struct smiapp_sensor *sensor) smiapp_pll_update() argument 280 struct smiapp_pll *pll = &sensor->pll; smiapp_pll_update() 283 pll->binning_horizontal = sensor->binning_horizontal; smiapp_pll_update() 284 pll->binning_vertical = sensor->binning_vertical; smiapp_pll_update() 286 sensor->link_freq->qmenu_int[sensor->link_freq->val]; smiapp_pll_update() 287 pll->scale_m = sensor->scale_m; smiapp_pll_update() 288 pll->bits_per_pixel = sensor->csi_format->compressed; smiapp_pll_update() 290 rval = smiapp_pll_try(sensor, pll); smiapp_pll_update() 294 __v4l2_ctrl_s_ctrl_int64(sensor->pixel_rate_parray, smiapp_pll_update() 296 __v4l2_ctrl_s_ctrl_int64(sensor->pixel_rate_csi, pll->pixel_rate_csi); smiapp_pll_update() 308 static void __smiapp_update_exposure_limits(struct smiapp_sensor *sensor) __smiapp_update_exposure_limits() argument 310 struct v4l2_ctrl *ctrl = sensor->exposure; __smiapp_update_exposure_limits() 313 max = sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].height __smiapp_update_exposure_limits() 314 + sensor->vblank->val __smiapp_update_exposure_limits() 315 - sensor->limits[SMIAPP_LIMIT_COARSE_INTEGRATION_TIME_MAX_MARGIN]; __smiapp_update_exposure_limits() 353 static u32 smiapp_pixel_order(struct smiapp_sensor *sensor) smiapp_pixel_order() argument 355 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_pixel_order() 358 if (sensor->hflip) { smiapp_pixel_order() 359 if (sensor->hflip->val) smiapp_pixel_order() 362 if (sensor->vflip->val) smiapp_pixel_order() 366 flip ^= sensor->hvflip_inv_mask; smiapp_pixel_order() 369 return sensor->default_pixel_order ^ flip; smiapp_pixel_order() 372 static void smiapp_update_mbus_formats(struct smiapp_sensor *sensor) smiapp_update_mbus_formats() argument 374 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_update_mbus_formats() 376 to_csi_format_idx(sensor->csi_format) & ~3; smiapp_update_mbus_formats() 378 to_csi_format_idx(sensor->internal_csi_format) & ~3; smiapp_update_mbus_formats() 379 unsigned int pixel_order = smiapp_pixel_order(sensor); smiapp_update_mbus_formats() 381 sensor->mbus_frame_fmts = smiapp_update_mbus_formats() 382 sensor->default_mbus_frame_fmts << pixel_order; smiapp_update_mbus_formats() 383 sensor->csi_format = smiapp_update_mbus_formats() 385 sensor->internal_csi_format = smiapp_update_mbus_formats() 406 struct smiapp_sensor *sensor = smiapp_set_ctrl() local 408 ->sensor; smiapp_set_ctrl() 416 sensor, smiapp_set_ctrl() 421 sensor, smiapp_set_ctrl() 426 if (sensor->streaming) smiapp_set_ctrl() 429 if (sensor->hflip->val) smiapp_set_ctrl() 432 if (sensor->vflip->val) smiapp_set_ctrl() 435 orient ^= sensor->hvflip_inv_mask; smiapp_set_ctrl() 436 rval = smiapp_write(sensor, smiapp_set_ctrl() 442 smiapp_update_mbus_formats(sensor); smiapp_set_ctrl() 447 exposure = sensor->exposure->val; smiapp_set_ctrl() 449 __smiapp_update_exposure_limits(sensor); smiapp_set_ctrl() 451 if (exposure > sensor->exposure->maximum) { smiapp_set_ctrl() 452 sensor->exposure->val = smiapp_set_ctrl() 453 sensor->exposure->maximum; smiapp_set_ctrl() 455 sensor->exposure); smiapp_set_ctrl() 461 sensor, SMIAPP_REG_U16_FRAME_LENGTH_LINES, smiapp_set_ctrl() 462 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].height smiapp_set_ctrl() 467 sensor, SMIAPP_REG_U16_LINE_LENGTH_PCK, smiapp_set_ctrl() 468 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].width smiapp_set_ctrl() 472 if (sensor->streaming) smiapp_set_ctrl() 475 return smiapp_pll_update(sensor); smiapp_set_ctrl() 480 for (i = 0; i < ARRAY_SIZE(sensor->test_data); i++) smiapp_set_ctrl() 482 sensor->test_data[i], smiapp_set_ctrl() 487 sensor, SMIAPP_REG_U16_TEST_PATTERN_MODE, ctrl->val); smiapp_set_ctrl() 492 sensor, SMIAPP_REG_U16_TEST_DATA_RED, ctrl->val); smiapp_set_ctrl() 496 sensor, SMIAPP_REG_U16_TEST_DATA_GREENR, ctrl->val); smiapp_set_ctrl() 500 sensor, SMIAPP_REG_U16_TEST_DATA_BLUE, ctrl->val); smiapp_set_ctrl() 504 sensor, SMIAPP_REG_U16_TEST_DATA_GREENB, ctrl->val); smiapp_set_ctrl() 519 static int smiapp_init_controls(struct smiapp_sensor *sensor) smiapp_init_controls() argument 521 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_init_controls() 524 rval = v4l2_ctrl_handler_init(&sensor->pixel_array->ctrl_handler, 12); smiapp_init_controls() 528 sensor->pixel_array->ctrl_handler.lock = &sensor->mutex; smiapp_init_controls() 530 sensor->analog_gain = v4l2_ctrl_new_std( smiapp_init_controls() 531 &sensor->pixel_array->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 533 sensor->limits[SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_MIN], smiapp_init_controls() 534 sensor->limits[SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_MAX], smiapp_init_controls() 535 max(sensor->limits[SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_STEP], 1U), smiapp_init_controls() 536 sensor->limits[SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_MIN]); smiapp_init_controls() 539 sensor->exposure = v4l2_ctrl_new_std( smiapp_init_controls() 540 &sensor->pixel_array->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 543 sensor->hflip = v4l2_ctrl_new_std( smiapp_init_controls() 544 &sensor->pixel_array->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 546 sensor->vflip = v4l2_ctrl_new_std( smiapp_init_controls() 547 &sensor->pixel_array->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 550 sensor->vblank = v4l2_ctrl_new_std( smiapp_init_controls() 551 &sensor->pixel_array->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 554 if (sensor->vblank) smiapp_init_controls() 555 sensor->vblank->flags |= V4L2_CTRL_FLAG_UPDATE; smiapp_init_controls() 557 sensor->hblank = v4l2_ctrl_new_std( smiapp_init_controls() 558 &sensor->pixel_array->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 561 if (sensor->hblank) smiapp_init_controls() 562 sensor->hblank->flags |= V4L2_CTRL_FLAG_UPDATE; smiapp_init_controls() 564 sensor->pixel_rate_parray = v4l2_ctrl_new_std( smiapp_init_controls() 565 &sensor->pixel_array->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 568 v4l2_ctrl_new_std_menu_items(&sensor->pixel_array->ctrl_handler, smiapp_init_controls() 573 if (sensor->pixel_array->ctrl_handler.error) { smiapp_init_controls() 576 sensor->pixel_array->ctrl_handler.error); smiapp_init_controls() 577 return sensor->pixel_array->ctrl_handler.error; smiapp_init_controls() 580 sensor->pixel_array->sd.ctrl_handler = smiapp_init_controls() 581 &sensor->pixel_array->ctrl_handler; smiapp_init_controls() 583 v4l2_ctrl_cluster(2, &sensor->hflip); smiapp_init_controls() 585 rval = v4l2_ctrl_handler_init(&sensor->src->ctrl_handler, 0); smiapp_init_controls() 589 sensor->src->ctrl_handler.lock = &sensor->mutex; smiapp_init_controls() 591 sensor->pixel_rate_csi = v4l2_ctrl_new_std( smiapp_init_controls() 592 &sensor->src->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_controls() 595 if (sensor->src->ctrl_handler.error) { smiapp_init_controls() 598 sensor->src->ctrl_handler.error); smiapp_init_controls() 599 return sensor->src->ctrl_handler.error; smiapp_init_controls() 602 sensor->src->sd.ctrl_handler = &sensor->src->ctrl_handler; smiapp_init_controls() 611 static int smiapp_init_late_controls(struct smiapp_sensor *sensor) smiapp_init_late_controls() argument 613 unsigned long *valid_link_freqs = &sensor->valid_link_freqs[ smiapp_init_late_controls() 614 sensor->csi_format->compressed - SMIAPP_COMPRESSED_BASE]; smiapp_init_late_controls() 617 for (i = 0; i < ARRAY_SIZE(sensor->test_data); i++) { smiapp_init_late_controls() 618 int max_value = (1 << sensor->csi_format->width) - 1; smiapp_init_late_controls() 620 sensor->test_data[i] = v4l2_ctrl_new_std( smiapp_init_late_controls() 621 &sensor->pixel_array->ctrl_handler, smiapp_init_late_controls() 626 for (max = 0; sensor->platform_data->op_sys_clock[max + 1]; max++); smiapp_init_late_controls() 628 sensor->link_freq = v4l2_ctrl_new_int_menu( smiapp_init_late_controls() 629 &sensor->src->ctrl_handler, &smiapp_ctrl_ops, smiapp_init_late_controls() 631 __ffs(*valid_link_freqs), sensor->platform_data->op_sys_clock); smiapp_init_late_controls() 633 return sensor->src->ctrl_handler.error; smiapp_init_late_controls() 636 static void smiapp_free_controls(struct smiapp_sensor *sensor) smiapp_free_controls() argument 640 for (i = 0; i < sensor->ssds_used; i++) smiapp_free_controls() 641 v4l2_ctrl_handler_free(&sensor->ssds[i].ctrl_handler); smiapp_free_controls() 644 static int smiapp_get_limits(struct smiapp_sensor *sensor, int const *limit, smiapp_get_limits() argument 647 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_get_limits() 654 sensor, smiapp_reg_limits[limit[i]].addr, &val); smiapp_get_limits() 657 sensor->limits[limit[i]] = val; smiapp_get_limits() 666 static int smiapp_get_all_limits(struct smiapp_sensor *sensor) smiapp_get_all_limits() argument 672 rval = smiapp_get_limits(sensor, &i, 1); smiapp_get_all_limits() 677 if (sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN] == 0) smiapp_get_all_limits() 678 smiapp_replace_limit(sensor, SMIAPP_LIMIT_SCALER_N_MIN, 16); smiapp_get_all_limits() 683 static int smiapp_get_limits_binning(struct smiapp_sensor *sensor) smiapp_get_limits_binning() argument 685 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_get_limits_binning() 707 if (sensor->limits[SMIAPP_LIMIT_BINNING_CAPABILITY] == smiapp_get_limits_binning() 710 sensor->limits[limits[i]] = smiapp_get_limits_binning() 711 sensor->limits[limits_replace[i]]; smiapp_get_limits_binning() 716 rval = smiapp_get_limits(sensor, limits, ARRAY_SIZE(limits)); smiapp_get_limits_binning() 724 if (sensor->limits[SMIAPP_LIMIT_MIN_FRAME_LENGTH_LINES_BIN] smiapp_get_limits_binning() 725 && sensor->limits[SMIAPP_LIMIT_MIN_LINE_LENGTH_PCK_BIN] smiapp_get_limits_binning() 726 && sensor->limits[SMIAPP_LIMIT_MIN_LINE_BLANKING_PCK_BIN]) smiapp_get_limits_binning() 734 sensor->limits[limits_replace[i]], smiapp_get_limits_binning() 735 sensor->limits[limits_replace[i]]); smiapp_get_limits_binning() 736 sensor->limits[limits[i]] = smiapp_get_limits_binning() 737 sensor->limits[limits_replace[i]]; smiapp_get_limits_binning() 743 static int smiapp_get_mbus_formats(struct smiapp_sensor *sensor) smiapp_get_mbus_formats() argument 745 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_get_mbus_formats() 746 struct smiapp_pll *pll = &sensor->pll; smiapp_get_mbus_formats() 752 sensor, SMIAPP_REG_U8_DATA_FORMAT_MODEL_TYPE, &type); smiapp_get_mbus_formats() 758 rval = smiapp_read(sensor, SMIAPP_REG_U8_PIXEL_ORDER, smiapp_get_mbus_formats() 782 sensor->default_pixel_order = pixel_order; smiapp_get_mbus_formats() 783 sensor->mbus_frame_fmts = 0; smiapp_get_mbus_formats() 789 sensor, smiapp_get_mbus_formats() 809 sensor->default_mbus_frame_fmts |= 1 << j; smiapp_get_mbus_formats() 816 pll->scale_m = sensor->scale_m; smiapp_get_mbus_formats() 822 &sensor->valid_link_freqs[ smiapp_get_mbus_formats() 829 if (!(sensor->default_mbus_frame_fmts & 1 << i)) smiapp_get_mbus_formats() 834 for (j = 0; sensor->platform_data->op_sys_clock[j]; j++) { smiapp_get_mbus_formats() 835 pll->link_freq = sensor->platform_data->op_sys_clock[j]; smiapp_get_mbus_formats() 837 rval = smiapp_pll_try(sensor, pll); smiapp_get_mbus_formats() 851 sensor->default_mbus_frame_fmts &= ~BIT(i); smiapp_get_mbus_formats() 855 if (!sensor->csi_format smiapp_get_mbus_formats() 856 || f->width > sensor->csi_format->width smiapp_get_mbus_formats() 857 || (f->width == sensor->csi_format->width smiapp_get_mbus_formats() 858 && f->compressed > sensor->csi_format->compressed)) { smiapp_get_mbus_formats() 859 sensor->csi_format = f; smiapp_get_mbus_formats() 860 sensor->internal_csi_format = f; smiapp_get_mbus_formats() 864 if (!sensor->csi_format) { smiapp_get_mbus_formats() 869 smiapp_update_mbus_formats(sensor); smiapp_get_mbus_formats() 874 static void smiapp_update_blanking(struct smiapp_sensor *sensor) smiapp_update_blanking() argument 876 struct v4l2_ctrl *vblank = sensor->vblank; smiapp_update_blanking() 877 struct v4l2_ctrl *hblank = sensor->hblank; smiapp_update_blanking() 881 sensor->limits[SMIAPP_LIMIT_MIN_FRAME_BLANKING_LINES], smiapp_update_blanking() 882 sensor->limits[SMIAPP_LIMIT_MIN_FRAME_LENGTH_LINES_BIN] - smiapp_update_blanking() 883 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].height); smiapp_update_blanking() 884 max = sensor->limits[SMIAPP_LIMIT_MAX_FRAME_LENGTH_LINES_BIN] - smiapp_update_blanking() 885 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].height; smiapp_update_blanking() 890 sensor->limits[SMIAPP_LIMIT_MIN_LINE_LENGTH_PCK_BIN] - smiapp_update_blanking() 891 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].width, smiapp_update_blanking() 892 sensor->limits[SMIAPP_LIMIT_MIN_LINE_BLANKING_PCK_BIN]); smiapp_update_blanking() 893 max = sensor->limits[SMIAPP_LIMIT_MAX_LINE_LENGTH_PCK_BIN] - smiapp_update_blanking() 894 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].width; smiapp_update_blanking() 898 __smiapp_update_exposure_limits(sensor); smiapp_update_blanking() 901 static int smiapp_update_mode(struct smiapp_sensor *sensor) smiapp_update_mode() argument 903 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_update_mode() 908 sensor->src->crop[SMIAPP_PAD_SRC].width, smiapp_update_mode() 909 sensor->src->crop[SMIAPP_PAD_SRC].height); smiapp_update_mode() 911 sensor->csi_format->width); smiapp_update_mode() 914 if (sensor->binning_horizontal == 1 && smiapp_update_mode() 915 sensor->binning_vertical == 1) { smiapp_update_mode() 919 (sensor->binning_horizontal << 4) smiapp_update_mode() 920 | sensor->binning_vertical; smiapp_update_mode() 923 sensor, SMIAPP_REG_U8_BINNING_TYPE, binning_type); smiapp_update_mode() 929 rval = smiapp_write(sensor, SMIAPP_REG_U8_BINNING_MODE, binning_mode); smiapp_update_mode() 934 rval = smiapp_get_limits_binning(sensor); smiapp_update_mode() 938 rval = smiapp_pll_update(sensor); smiapp_update_mode() 943 smiapp_update_blanking(sensor); smiapp_update_mode() 945 dev_dbg(&client->dev, "vblank\t\t%d\n", sensor->vblank->val); smiapp_update_mode() 946 dev_dbg(&client->dev, "hblank\t\t%d\n", sensor->hblank->val); smiapp_update_mode() 949 sensor->pll.pixel_rate_pixel_array / smiapp_update_mode() 950 ((sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].width smiapp_update_mode() 951 + sensor->hblank->val) * smiapp_update_mode() 952 (sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].height smiapp_update_mode() 953 + sensor->vblank->val) / 100)); smiapp_update_mode() 963 static int smiapp_read_nvm(struct smiapp_sensor *sensor, smiapp_read_nvm() argument 969 np = sensor->nvm_size / SMIAPP_NVM_PAGE_SIZE; smiapp_read_nvm() 972 sensor, smiapp_read_nvm() 977 rval = smiapp_write(sensor, smiapp_read_nvm() 986 sensor, smiapp_read_nvm() 1004 sensor, smiapp_read_nvm() 1015 rval2 = smiapp_write(sensor, SMIAPP_REG_U8_DATA_TRANSFER_IF_1_CTRL, 0); smiapp_read_nvm() 1027 static int smiapp_change_cci_addr(struct smiapp_sensor *sensor) smiapp_change_cci_addr() argument 1029 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_change_cci_addr() 1033 client->addr = sensor->platform_data->i2c_addr_dfl; smiapp_change_cci_addr() 1035 rval = smiapp_write(sensor, smiapp_change_cci_addr() 1037 sensor->platform_data->i2c_addr_alt << 1); smiapp_change_cci_addr() 1041 client->addr = sensor->platform_data->i2c_addr_alt; smiapp_change_cci_addr() 1044 rval = smiapp_read(sensor, SMIAPP_REG_U8_CCI_ADDRESS_CONTROL, &val); smiapp_change_cci_addr() 1048 if (val != sensor->platform_data->i2c_addr_alt << 1) smiapp_change_cci_addr() 1059 static int smiapp_setup_flash_strobe(struct smiapp_sensor *sensor) smiapp_setup_flash_strobe() argument 1062 unsigned int ext_freq = sensor->platform_data->ext_clk; smiapp_setup_flash_strobe() 1068 strobe_setup = sensor->platform_data->strobe_setup; smiapp_setup_flash_strobe() 1150 rval = smiapp_write(sensor, SMIAPP_REG_U8_FLASH_MODE_RS, smiapp_setup_flash_strobe() 1155 rval = smiapp_write(sensor, SMIAPP_REG_U8_FLASH_STROBE_ADJUSTMENT, smiapp_setup_flash_strobe() 1161 sensor, SMIAPP_REG_U16_TFLASH_STROBE_WIDTH_HIGH_RS_CTRL, smiapp_setup_flash_strobe() 1166 rval = smiapp_write(sensor, SMIAPP_REG_U16_TFLASH_STROBE_DELAY_RS_CTRL, smiapp_setup_flash_strobe() 1171 rval = smiapp_write(sensor, SMIAPP_REG_U16_FLASH_STROBE_START_POINT, smiapp_setup_flash_strobe() 1176 rval = smiapp_write(sensor, SMIAPP_REG_U8_FLASH_TRIGGER_RS, smiapp_setup_flash_strobe() 1180 sensor->platform_data->strobe_setup->trigger = 0; smiapp_setup_flash_strobe() 1189 static int smiapp_power_on(struct smiapp_sensor *sensor) smiapp_power_on() argument 1191 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_power_on() 1195 rval = regulator_enable(sensor->vana); smiapp_power_on() 1202 if (sensor->platform_data->set_xclk) smiapp_power_on() 1203 rval = sensor->platform_data->set_xclk( smiapp_power_on() 1204 &sensor->src->sd, sensor->platform_data->ext_clk); smiapp_power_on() 1206 rval = clk_prepare_enable(sensor->ext_clk); smiapp_power_on() 1213 if (gpio_is_valid(sensor->platform_data->xshutdown)) smiapp_power_on() 1214 gpio_set_value(sensor->platform_data->xshutdown, 1); smiapp_power_on() 1216 sleep = SMIAPP_RESET_DELAY(sensor->platform_data->ext_clk); smiapp_power_on() 1221 * Those failures seem to be caused by the sensor requiring a longer smiapp_power_on() 1230 if (sensor->platform_data->i2c_addr_alt) { smiapp_power_on() 1231 rval = smiapp_change_cci_addr(sensor); smiapp_power_on() 1238 rval = smiapp_write(sensor, SMIAPP_REG_U8_SOFTWARE_RESET, smiapp_power_on() 1245 if (sensor->platform_data->i2c_addr_alt) { smiapp_power_on() 1246 rval = smiapp_change_cci_addr(sensor); smiapp_power_on() 1253 rval = smiapp_write(sensor, SMIAPP_REG_U16_COMPRESSION_MODE, smiapp_power_on() 1261 sensor, SMIAPP_REG_U16_EXTCLK_FREQUENCY_MHZ, smiapp_power_on() 1262 sensor->platform_data->ext_clk / (1000000 / (1 << 8))); smiapp_power_on() 1268 rval = smiapp_write(sensor, SMIAPP_REG_U8_CSI_LANE_MODE, smiapp_power_on() 1269 sensor->platform_data->lanes - 1); smiapp_power_on() 1275 rval = smiapp_write(sensor, SMIAPP_REG_U8_FAST_STANDBY_CTRL, smiapp_power_on() 1282 rval = smiapp_write(sensor, SMIAPP_REG_U8_CSI_SIGNALLING_MODE, smiapp_power_on() 1283 sensor->platform_data->csi_signalling_mode); smiapp_power_on() 1289 /* DPHY control done by sensor based on requested link rate */ smiapp_power_on() 1290 rval = smiapp_write(sensor, SMIAPP_REG_U8_DPHY_CTRL, smiapp_power_on() 1295 rval = smiapp_call_quirk(sensor, post_poweron); smiapp_power_on() 1302 if (!sensor->pixel_array) smiapp_power_on() 1306 &sensor->pixel_array->ctrl_handler); smiapp_power_on() 1310 rval = v4l2_ctrl_handler_setup(&sensor->src->ctrl_handler); smiapp_power_on() 1314 mutex_lock(&sensor->mutex); smiapp_power_on() 1315 rval = smiapp_update_mode(sensor); smiapp_power_on() 1316 mutex_unlock(&sensor->mutex); smiapp_power_on() 1323 if (gpio_is_valid(sensor->platform_data->xshutdown)) smiapp_power_on() 1324 gpio_set_value(sensor->platform_data->xshutdown, 0); smiapp_power_on() 1325 if (sensor->platform_data->set_xclk) smiapp_power_on() 1326 sensor->platform_data->set_xclk(&sensor->src->sd, 0); smiapp_power_on() 1328 clk_disable_unprepare(sensor->ext_clk); smiapp_power_on() 1331 regulator_disable(sensor->vana); smiapp_power_on() 1335 static void smiapp_power_off(struct smiapp_sensor *sensor) smiapp_power_off() argument 1339 * but they are essentially the same signals. So if the sensor is smiapp_power_off() 1340 * powered off while the lens is powered on the sensor does not smiapp_power_off() 1344 if (sensor->platform_data->i2c_addr_alt) smiapp_power_off() 1345 smiapp_write(sensor, smiapp_power_off() 1349 if (gpio_is_valid(sensor->platform_data->xshutdown)) smiapp_power_off() 1350 gpio_set_value(sensor->platform_data->xshutdown, 0); smiapp_power_off() 1351 if (sensor->platform_data->set_xclk) smiapp_power_off() 1352 sensor->platform_data->set_xclk(&sensor->src->sd, 0); smiapp_power_off() 1354 clk_disable_unprepare(sensor->ext_clk); smiapp_power_off() 1356 regulator_disable(sensor->vana); smiapp_power_off() 1357 sensor->streaming = false; smiapp_power_off() 1362 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_power() local 1365 mutex_lock(&sensor->power_mutex); smiapp_set_power() 1367 if (on && !sensor->power_count) { smiapp_set_power() 1369 ret = smiapp_power_on(sensor); smiapp_set_power() 1372 } else if (!on && sensor->power_count == 1) { smiapp_set_power() 1373 smiapp_power_off(sensor); smiapp_set_power() 1377 sensor->power_count += on ? 1 : -1; smiapp_set_power() 1378 WARN_ON(sensor->power_count < 0); smiapp_set_power() 1381 mutex_unlock(&sensor->power_mutex); smiapp_set_power() 1389 static int smiapp_start_streaming(struct smiapp_sensor *sensor) smiapp_start_streaming() argument 1391 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_start_streaming() 1394 mutex_lock(&sensor->mutex); smiapp_start_streaming() 1396 rval = smiapp_write(sensor, SMIAPP_REG_U16_CSI_DATA_FORMAT, smiapp_start_streaming() 1397 (sensor->csi_format->width << 8) | smiapp_start_streaming() 1398 sensor->csi_format->compressed); smiapp_start_streaming() 1402 rval = smiapp_pll_configure(sensor); smiapp_start_streaming() 1407 rval = smiapp_write(sensor, SMIAPP_REG_U16_X_ADDR_START, smiapp_start_streaming() 1408 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].left); smiapp_start_streaming() 1412 rval = smiapp_write(sensor, SMIAPP_REG_U16_Y_ADDR_START, smiapp_start_streaming() 1413 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].top); smiapp_start_streaming() 1419 sensor, SMIAPP_REG_U16_X_ADDR_END, smiapp_start_streaming() 1420 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].left smiapp_start_streaming() 1421 + sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].width - 1); smiapp_start_streaming() 1426 sensor, SMIAPP_REG_U16_Y_ADDR_END, smiapp_start_streaming() 1427 sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].top smiapp_start_streaming() 1428 + sensor->pixel_array->crop[SMIAPP_PA_PAD_SRC].height - 1); smiapp_start_streaming() 1438 if (sensor->limits[SMIAPP_LIMIT_DIGITAL_CROP_CAPABILITY] smiapp_start_streaming() 1441 sensor, SMIAPP_REG_U16_DIGITAL_CROP_X_OFFSET, smiapp_start_streaming() 1442 sensor->scaler->crop[SMIAPP_PAD_SINK].left); smiapp_start_streaming() 1447 sensor, SMIAPP_REG_U16_DIGITAL_CROP_Y_OFFSET, smiapp_start_streaming() 1448 sensor->scaler->crop[SMIAPP_PAD_SINK].top); smiapp_start_streaming() 1453 sensor, SMIAPP_REG_U16_DIGITAL_CROP_IMAGE_WIDTH, smiapp_start_streaming() 1454 sensor->scaler->crop[SMIAPP_PAD_SINK].width); smiapp_start_streaming() 1459 sensor, SMIAPP_REG_U16_DIGITAL_CROP_IMAGE_HEIGHT, smiapp_start_streaming() 1460 sensor->scaler->crop[SMIAPP_PAD_SINK].height); smiapp_start_streaming() 1466 if (sensor->limits[SMIAPP_LIMIT_SCALING_CAPABILITY] smiapp_start_streaming() 1468 rval = smiapp_write(sensor, SMIAPP_REG_U16_SCALING_MODE, smiapp_start_streaming() 1469 sensor->scaling_mode); smiapp_start_streaming() 1473 rval = smiapp_write(sensor, SMIAPP_REG_U16_SCALE_M, smiapp_start_streaming() 1474 sensor->scale_m); smiapp_start_streaming() 1479 /* Output size from sensor */ smiapp_start_streaming() 1480 rval = smiapp_write(sensor, SMIAPP_REG_U16_X_OUTPUT_SIZE, smiapp_start_streaming() 1481 sensor->src->crop[SMIAPP_PAD_SRC].width); smiapp_start_streaming() 1484 rval = smiapp_write(sensor, SMIAPP_REG_U16_Y_OUTPUT_SIZE, smiapp_start_streaming() 1485 sensor->src->crop[SMIAPP_PAD_SRC].height); smiapp_start_streaming() 1489 if ((sensor->limits[SMIAPP_LIMIT_FLASH_MODE_CAPABILITY] & smiapp_start_streaming() 1492 sensor->platform_data->strobe_setup != NULL && smiapp_start_streaming() 1493 sensor->platform_data->strobe_setup->trigger != 0) { smiapp_start_streaming() 1494 rval = smiapp_setup_flash_strobe(sensor); smiapp_start_streaming() 1499 rval = smiapp_call_quirk(sensor, pre_streamon); smiapp_start_streaming() 1505 rval = smiapp_write(sensor, SMIAPP_REG_U8_MODE_SELECT, smiapp_start_streaming() 1509 mutex_unlock(&sensor->mutex); smiapp_start_streaming() 1514 static int smiapp_stop_streaming(struct smiapp_sensor *sensor) smiapp_stop_streaming() argument 1516 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_stop_streaming() 1519 mutex_lock(&sensor->mutex); smiapp_stop_streaming() 1520 rval = smiapp_write(sensor, SMIAPP_REG_U8_MODE_SELECT, smiapp_stop_streaming() 1525 rval = smiapp_call_quirk(sensor, post_streamoff); smiapp_stop_streaming() 1530 mutex_unlock(&sensor->mutex); smiapp_stop_streaming() 1540 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_stream() local 1543 if (sensor->streaming == enable) smiapp_set_stream() 1547 sensor->streaming = true; smiapp_set_stream() 1548 rval = smiapp_start_streaming(sensor); smiapp_set_stream() 1550 sensor->streaming = false; smiapp_set_stream() 1552 rval = smiapp_stop_streaming(sensor); smiapp_set_stream() 1553 sensor->streaming = false; smiapp_set_stream() 1564 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_enum_mbus_code() local 1569 mutex_lock(&sensor->mutex); smiapp_enum_mbus_code() 1574 if (subdev != &sensor->src->sd || code->pad != SMIAPP_PAD_SRC) { smiapp_enum_mbus_code() 1578 code->code = sensor->internal_csi_format->code; smiapp_enum_mbus_code() 1584 if (sensor->mbus_frame_fmts & (1 << i)) smiapp_enum_mbus_code() 1597 mutex_unlock(&sensor->mutex); smiapp_enum_mbus_code() 1605 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); __smiapp_get_mbus_code() local 1607 if (subdev == &sensor->src->sd && pad == SMIAPP_PAD_SRC) __smiapp_get_mbus_code() 1608 return sensor->csi_format->code; __smiapp_get_mbus_code() 1610 return sensor->internal_csi_format->code; __smiapp_get_mbus_code() 1642 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_get_format() local 1645 mutex_lock(&sensor->mutex); smiapp_get_format() 1647 mutex_unlock(&sensor->mutex); smiapp_get_format() 1686 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_propagate() local 1697 if (ssd == sensor->scaler) { smiapp_propagate() 1698 sensor->scale_m = smiapp_propagate() 1699 sensor->limits[ smiapp_propagate() 1701 sensor->scaling_mode = smiapp_propagate() 1703 } else if (ssd == sensor->binner) { smiapp_propagate() 1704 sensor->binning_horizontal = 1; smiapp_propagate() 1705 sensor->binning_vertical = 1; smiapp_propagate() 1718 *smiapp_validate_csi_data_format(struct smiapp_sensor *sensor, u32 code) smiapp_validate_csi_data_format() argument 1720 const struct smiapp_csi_data_format *csi_format = sensor->csi_format; smiapp_validate_csi_data_format() 1724 if (sensor->mbus_frame_fmts & (1 << i) smiapp_validate_csi_data_format() 1736 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_format_source() local 1738 *old_csi_format = sensor->csi_format; smiapp_set_format_source() 1752 if (subdev != &sensor->src->sd) smiapp_set_format_source() 1755 csi_format = smiapp_validate_csi_data_format(sensor, code); smiapp_set_format_source() 1762 sensor->csi_format = csi_format; smiapp_set_format_source() 1765 for (i = 0; i < ARRAY_SIZE(sensor->test_data); i++) smiapp_set_format_source() 1767 sensor->test_data[i], 0, smiapp_set_format_source() 1774 &sensor->valid_link_freqs[sensor->csi_format->compressed smiapp_set_format_source() 1778 sensor->link_freq, 0, smiapp_set_format_source() 1782 return smiapp_pll_update(sensor); smiapp_set_format_source() 1789 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_format() local 1793 mutex_lock(&sensor->mutex); smiapp_set_format() 1800 mutex_unlock(&sensor->mutex); smiapp_set_format() 1813 sensor->limits[SMIAPP_LIMIT_MIN_X_OUTPUT_SIZE], smiapp_set_format() 1814 sensor->limits[SMIAPP_LIMIT_MAX_X_OUTPUT_SIZE]); smiapp_set_format() 1817 sensor->limits[SMIAPP_LIMIT_MIN_Y_OUTPUT_SIZE], smiapp_set_format() 1818 sensor->limits[SMIAPP_LIMIT_MAX_Y_OUTPUT_SIZE]); smiapp_set_format() 1831 mutex_unlock(&sensor->mutex); smiapp_set_format() 1845 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); scaling_goodness() local 1871 if (w < sensor->limits[SMIAPP_LIMIT_MIN_X_OUTPUT_SIZE]) scaling_goodness() 1886 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_compose_binner() local 1894 for (i = 0; i < sensor->nbinning_subtypes; i++) { smiapp_set_compose_binner() 1898 / sensor->binning_subtypes[i].horizontal, smiapp_set_compose_binner() 1901 / sensor->binning_subtypes[i].vertical, smiapp_set_compose_binner() 1905 binh = sensor->binning_subtypes[i].horizontal; smiapp_set_compose_binner() 1906 binv = sensor->binning_subtypes[i].vertical; smiapp_set_compose_binner() 1911 sensor->binning_vertical = binv; smiapp_set_compose_binner() 1912 sensor->binning_horizontal = binh; smiapp_set_compose_binner() 1935 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_compose_scaler() local 1937 u32 scale_m = sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN]; smiapp_set_compose_scaler() 1950 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN] / sel->r.width; smiapp_set_compose_scaler() 1952 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN] / sel->r.height; smiapp_set_compose_scaler() 1954 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN] smiapp_set_compose_scaler() 1955 / sensor->limits[SMIAPP_LIMIT_MIN_X_OUTPUT_SIZE]; smiapp_set_compose_scaler() 1957 a = clamp(a, sensor->limits[SMIAPP_LIMIT_SCALER_M_MIN], smiapp_set_compose_scaler() 1958 sensor->limits[SMIAPP_LIMIT_SCALER_M_MAX]); smiapp_set_compose_scaler() 1959 b = clamp(b, sensor->limits[SMIAPP_LIMIT_SCALER_M_MIN], smiapp_set_compose_scaler() 1960 sensor->limits[SMIAPP_LIMIT_SCALER_M_MAX]); smiapp_set_compose_scaler() 1961 max_m = clamp(max_m, sensor->limits[SMIAPP_LIMIT_SCALER_M_MIN], smiapp_set_compose_scaler() 1962 sensor->limits[SMIAPP_LIMIT_SCALER_M_MAX]); smiapp_set_compose_scaler() 1989 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN], smiapp_set_compose_scaler() 2003 if (sensor->limits[SMIAPP_LIMIT_SCALING_CAPABILITY] smiapp_set_compose_scaler() 2010 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN], smiapp_set_compose_scaler() 2014 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN], smiapp_set_compose_scaler() 2028 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN]) & ~1; smiapp_set_compose_scaler() 2033 * sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN]) smiapp_set_compose_scaler() 2039 sensor->scale_m = scale_m; smiapp_set_compose_scaler() 2040 sensor->scaling_mode = mode; smiapp_set_compose_scaler() 2048 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_compose() local 2057 if (ssd == sensor->binner) smiapp_set_compose() 2067 return smiapp_update_mode(sensor); smiapp_set_compose() 2075 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); __smiapp_sel_supported() local 2082 if (ssd == sensor->pixel_array __smiapp_sel_supported() 2085 if (ssd == sensor->src __smiapp_sel_supported() 2088 if (ssd == sensor->scaler __smiapp_sel_supported() 2090 && sensor->limits[SMIAPP_LIMIT_DIGITAL_CROP_CAPABILITY] __smiapp_sel_supported() 2095 if (ssd == sensor->pixel_array __smiapp_sel_supported() 2103 if (ssd == sensor->binner) __smiapp_sel_supported() 2105 if (ssd == sensor->scaler __smiapp_sel_supported() 2106 && sensor->limits[SMIAPP_LIMIT_SCALING_CAPABILITY] __smiapp_sel_supported() 2119 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_crop() local 2147 if (ssd == sensor->src && sel->pad == SMIAPP_PAD_SRC) { smiapp_set_crop() 2160 if (ssd != sensor->pixel_array && sel->pad == SMIAPP_PAD_SINK) smiapp_set_crop() 2171 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); __smiapp_get_selection() local 2198 if (ssd == sensor->pixel_array) { __smiapp_get_selection() 2201 sensor->limits[SMIAPP_LIMIT_X_ADDR_MAX] + 1; __smiapp_get_selection() 2203 sensor->limits[SMIAPP_LIMIT_Y_ADDR_MAX] + 1; __smiapp_get_selection() 2226 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_get_selection() local 2229 mutex_lock(&sensor->mutex); smiapp_get_selection() 2231 mutex_unlock(&sensor->mutex); smiapp_get_selection() 2239 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_set_selection() local 2246 mutex_lock(&sensor->mutex); smiapp_set_selection() 2254 sensor->limits[SMIAPP_LIMIT_MIN_X_OUTPUT_SIZE], smiapp_set_selection() 2257 sensor->limits[SMIAPP_LIMIT_MIN_Y_OUTPUT_SIZE], smiapp_set_selection() 2271 mutex_unlock(&sensor->mutex); smiapp_set_selection() 2277 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_get_skip_frames() local 2279 *frames = sensor->frame_skip; smiapp_get_skip_frames() 2293 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_sysfs_nvm_read() local 2296 if (!sensor->dev_init_done) smiapp_sysfs_nvm_read() 2299 if (!sensor->nvm_size) { smiapp_sysfs_nvm_read() 2301 sensor->nvm_size = sensor->platform_data->nvm_size; smiapp_sysfs_nvm_read() 2304 if (smiapp_read_nvm(sensor, sensor->nvm)) { smiapp_sysfs_nvm_read() 2314 nbytes = min_t(unsigned int, sensor->nvm_size, PAGE_SIZE); smiapp_sysfs_nvm_read() 2315 memcpy(buf, sensor->nvm, nbytes); smiapp_sysfs_nvm_read() 2326 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_sysfs_ident_read() local 2327 struct smiapp_module_info *minfo = &sensor->minfo; smiapp_sysfs_ident_read() 2340 static int smiapp_identify_module(struct smiapp_sensor *sensor) smiapp_identify_module() argument 2342 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_identify_module() 2343 struct smiapp_module_info *minfo = &sensor->minfo; smiapp_identify_module() 2350 rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_MANUFACTURER_ID, smiapp_identify_module() 2353 rval = smiapp_read_8only(sensor, SMIAPP_REG_U16_MODEL_ID, smiapp_identify_module() 2356 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2360 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2364 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2368 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2372 rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_MODULE_DATE_DAY, smiapp_identify_module() 2377 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2381 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2385 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2389 rval = smiapp_read_8only(sensor, smiapp_identify_module() 2395 rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_SMIA_VERSION, smiapp_identify_module() 2398 rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_SMIAPP_VERSION, smiapp_identify_module() 2402 dev_err(&client->dev, "sensor detection failed\n"); smiapp_identify_module() 2414 dev_dbg(&client->dev, "sensor 0x%2.2x-0x%4.4x\n", smiapp_identify_module() 2418 "sensor revision 0x%2.2x firmware version 0x%2.2x\n", smiapp_identify_module() 2427 * parameters whereas the rvalues are sensor parameters. smiapp_identify_module() 2461 dev_dbg(&client->dev, "the sensor is called %s, ident %2.2x%4.4x%2.2x\n", smiapp_identify_module() 2472 static int smiapp_register_subdevs(struct smiapp_sensor *sensor) smiapp_register_subdevs() argument 2474 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_register_subdevs() 2476 sensor->scaler, smiapp_register_subdevs() 2477 sensor->binner, smiapp_register_subdevs() 2478 sensor->pixel_array, smiapp_register_subdevs() 2510 rval = v4l2_device_register_subdev(sensor->src->sd.v4l2_dev, smiapp_register_subdevs() 2522 static void smiapp_cleanup(struct smiapp_sensor *sensor) smiapp_cleanup() argument 2524 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_cleanup() 2529 smiapp_free_controls(sensor); smiapp_cleanup() 2532 static int smiapp_init(struct smiapp_sensor *sensor) smiapp_init() argument 2534 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_init() 2535 struct smiapp_pll *pll = &sensor->pll; smiapp_init() 2540 sensor->vana = devm_regulator_get(&client->dev, "vana"); smiapp_init() 2541 if (IS_ERR(sensor->vana)) { smiapp_init() 2543 return PTR_ERR(sensor->vana); smiapp_init() 2546 if (!sensor->platform_data->set_xclk) { smiapp_init() 2547 sensor->ext_clk = devm_clk_get(&client->dev, NULL); smiapp_init() 2548 if (IS_ERR(sensor->ext_clk)) { smiapp_init() 2550 return PTR_ERR(sensor->ext_clk); smiapp_init() 2553 rval = clk_set_rate(sensor->ext_clk, smiapp_init() 2554 sensor->platform_data->ext_clk); smiapp_init() 2558 sensor->platform_data->ext_clk); smiapp_init() 2563 if (gpio_is_valid(sensor->platform_data->xshutdown)) { smiapp_init() 2565 &client->dev, sensor->platform_data->xshutdown, 0, smiapp_init() 2570 sensor->platform_data->xshutdown); smiapp_init() 2575 rval = smiapp_power_on(sensor); smiapp_init() 2579 rval = smiapp_identify_module(sensor); smiapp_init() 2585 rval = smiapp_get_all_limits(sensor); smiapp_init() 2594 * The application of H-FLIP and V-FLIP on the sensor is modified by smiapp_init() 2595 * the sensor orientation on the board. smiapp_init() 2604 if (sensor->platform_data->module_board_orient == smiapp_init() 2606 sensor->hvflip_inv_mask = SMIAPP_IMAGE_ORIENTATION_HFLIP | smiapp_init() 2609 rval = smiapp_call_quirk(sensor, limits); smiapp_init() 2615 if (sensor->limits[SMIAPP_LIMIT_BINNING_CAPABILITY]) { smiapp_init() 2618 rval = smiapp_read(sensor, smiapp_init() 2624 sensor->nbinning_subtypes = min_t(u8, val, smiapp_init() 2627 for (i = 0; i < sensor->nbinning_subtypes; i++) { smiapp_init() 2629 sensor, SMIAPP_REG_U8_BINNING_TYPE_n(i), &val); smiapp_init() 2634 sensor->binning_subtypes[i] = smiapp_init() 2638 sensor->binning_subtypes[i].horizontal, smiapp_init() 2639 sensor->binning_subtypes[i].vertical); smiapp_init() 2642 sensor->binning_horizontal = 1; smiapp_init() 2643 sensor->binning_vertical = 1; smiapp_init() 2650 /* SMIA++ NVM initialization - it will be read from the sensor smiapp_init() 2653 if (sensor->minfo.smiapp_version && sensor->platform_data->nvm_size) { smiapp_init() 2654 sensor->nvm = devm_kzalloc(&client->dev, smiapp_init() 2655 sensor->platform_data->nvm_size, GFP_KERNEL); smiapp_init() 2656 if (sensor->nvm == NULL) { smiapp_init() 2669 /* We consider this as profile 0 sensor if any of these are zero. */ smiapp_init() 2670 if (!sensor->limits[SMIAPP_LIMIT_MIN_OP_SYS_CLK_DIV] || smiapp_init() 2671 !sensor->limits[SMIAPP_LIMIT_MAX_OP_SYS_CLK_DIV] || smiapp_init() 2672 !sensor->limits[SMIAPP_LIMIT_MIN_OP_PIX_CLK_DIV] || smiapp_init() 2673 !sensor->limits[SMIAPP_LIMIT_MAX_OP_PIX_CLK_DIV]) { smiapp_init() 2674 sensor->minfo.smiapp_profile = SMIAPP_PROFILE_0; smiapp_init() 2675 } else if (sensor->limits[SMIAPP_LIMIT_SCALING_CAPABILITY] smiapp_init() 2677 if (sensor->limits[SMIAPP_LIMIT_SCALING_CAPABILITY] smiapp_init() 2679 sensor->minfo.smiapp_profile = SMIAPP_PROFILE_1; smiapp_init() 2681 sensor->minfo.smiapp_profile = SMIAPP_PROFILE_2; smiapp_init() 2682 sensor->scaler = &sensor->ssds[sensor->ssds_used]; smiapp_init() 2683 sensor->ssds_used++; smiapp_init() 2684 } else if (sensor->limits[SMIAPP_LIMIT_DIGITAL_CROP_CAPABILITY] smiapp_init() 2686 sensor->scaler = &sensor->ssds[sensor->ssds_used]; smiapp_init() 2687 sensor->ssds_used++; smiapp_init() 2689 sensor->binner = &sensor->ssds[sensor->ssds_used]; smiapp_init() 2690 sensor->ssds_used++; smiapp_init() 2691 sensor->pixel_array = &sensor->ssds[sensor->ssds_used]; smiapp_init() 2692 sensor->ssds_used++; smiapp_init() 2694 sensor->scale_m = sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN]; smiapp_init() 2698 pll->csi2.lanes = sensor->platform_data->lanes; smiapp_init() 2699 pll->ext_clk_freq_hz = sensor->platform_data->ext_clk; smiapp_init() 2700 pll->scale_n = sensor->limits[SMIAPP_LIMIT_SCALER_N_MIN]; smiapp_init() 2702 if (sensor->minfo.smiapp_profile == SMIAPP_PROFILE_0) smiapp_init() 2710 { sensor->scaler, "scaler", }, smiapp_init() 2711 { sensor->binner, "binner", }, smiapp_init() 2712 { sensor->pixel_array, "pixel array", }, smiapp_init() 2719 if (this != sensor->src) smiapp_init() 2722 this->sensor = sensor; smiapp_init() 2724 if (this == sensor->pixel_array) { smiapp_init() 2733 sensor->minfo.name, _this->name, smiapp_init() 2737 sensor->limits[SMIAPP_LIMIT_X_ADDR_MAX] + 1; smiapp_init() 2739 sensor->limits[SMIAPP_LIMIT_Y_ADDR_MAX] + 1; smiapp_init() 2744 if (this != sensor->pixel_array) { smiapp_init() 2764 dev_dbg(&client->dev, "profile %d\n", sensor->minfo.smiapp_profile); smiapp_init() 2766 sensor->pixel_array->sd.entity.type = MEDIA_ENT_T_V4L2_SUBDEV_SENSOR; smiapp_init() 2769 smiapp_read_frame_fmt(sensor); smiapp_init() 2770 rval = smiapp_init_controls(sensor); smiapp_init() 2774 rval = smiapp_call_quirk(sensor, init); smiapp_init() 2778 rval = smiapp_get_mbus_formats(sensor); smiapp_init() 2784 rval = smiapp_init_late_controls(sensor); smiapp_init() 2790 mutex_lock(&sensor->mutex); smiapp_init() 2791 rval = smiapp_update_mode(sensor); smiapp_init() 2792 mutex_unlock(&sensor->mutex); smiapp_init() 2798 sensor->streaming = false; smiapp_init() 2799 sensor->dev_init_done = true; smiapp_init() 2801 smiapp_power_off(sensor); smiapp_init() 2806 smiapp_cleanup(sensor); smiapp_init() 2809 smiapp_power_off(sensor); smiapp_init() 2815 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_registered() local 2820 rval = smiapp_init(sensor); smiapp_registered() 2825 rval = smiapp_register_subdevs(sensor); smiapp_registered() 2827 smiapp_cleanup(sensor); smiapp_registered() 2835 struct smiapp_sensor *sensor = ssd->sensor; smiapp_open() local 2837 smiapp_csi_data_formats[smiapp_pixel_order(sensor)].code; smiapp_open() 2840 mutex_lock(&sensor->mutex); smiapp_open() 2848 try_fmt->width = sensor->limits[SMIAPP_LIMIT_X_ADDR_MAX] + 1; smiapp_open() 2849 try_fmt->height = sensor->limits[SMIAPP_LIMIT_Y_ADDR_MAX] + 1; smiapp_open() 2858 if (ssd != sensor->pixel_array) smiapp_open() 2865 mutex_unlock(&sensor->mutex); smiapp_open() 2899 .sensor = &smiapp_sensor_ops, 2927 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_suspend() local 2930 BUG_ON(mutex_is_locked(&sensor->mutex)); smiapp_suspend() 2932 if (sensor->power_count == 0) smiapp_suspend() 2935 if (sensor->streaming) smiapp_suspend() 2936 smiapp_stop_streaming(sensor); smiapp_suspend() 2938 streaming = sensor->streaming; smiapp_suspend() 2940 smiapp_power_off(sensor); smiapp_suspend() 2943 sensor->streaming = streaming; smiapp_suspend() 2952 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_resume() local 2955 if (sensor->power_count == 0) smiapp_resume() 2958 rval = smiapp_power_on(sensor); smiapp_resume() 2962 if (sensor->streaming) smiapp_resume() 2963 rval = smiapp_start_streaming(sensor); smiapp_resume() 3060 struct smiapp_sensor *sensor; smiapp_probe() local 3067 sensor = devm_kzalloc(&client->dev, sizeof(*sensor), GFP_KERNEL); smiapp_probe() 3068 if (sensor == NULL) smiapp_probe() 3071 sensor->platform_data = pdata; smiapp_probe() 3072 mutex_init(&sensor->mutex); smiapp_probe() 3073 mutex_init(&sensor->power_mutex); smiapp_probe() 3074 sensor->src = &sensor->ssds[sensor->ssds_used]; smiapp_probe() 3076 v4l2_i2c_subdev_init(&sensor->src->sd, client, &smiapp_ops); smiapp_probe() 3077 sensor->src->sd.internal_ops = &smiapp_internal_src_ops; smiapp_probe() 3078 sensor->src->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; smiapp_probe() 3079 sensor->src->sensor = sensor; smiapp_probe() 3081 sensor->src->pads[0].flags = MEDIA_PAD_FL_SOURCE; smiapp_probe() 3082 rval = media_entity_init(&sensor->src->sd.entity, 2, smiapp_probe() 3083 sensor->src->pads, 0); smiapp_probe() 3088 rval = smiapp_init(sensor); smiapp_probe() 3093 rval = v4l2_async_register_subdev(&sensor->src->sd); smiapp_probe() 3100 media_entity_cleanup(&sensor->src->sd.entity); smiapp_probe() 3108 struct smiapp_sensor *sensor = to_smiapp_sensor(subdev); smiapp_remove() local 3113 if (sensor->power_count) { smiapp_remove() 3114 if (gpio_is_valid(sensor->platform_data->xshutdown)) smiapp_remove() 3115 gpio_set_value(sensor->platform_data->xshutdown, 0); smiapp_remove() 3116 if (sensor->platform_data->set_xclk) smiapp_remove() 3117 sensor->platform_data->set_xclk(&sensor->src->sd, 0); smiapp_remove() 3119 clk_disable_unprepare(sensor->ext_clk); smiapp_remove() 3120 sensor->power_count = 0; smiapp_remove() 3123 for (i = 0; i < sensor->ssds_used; i++) { smiapp_remove() 3124 v4l2_device_unregister_subdev(&sensor->ssds[i].sd); smiapp_remove() 3125 media_entity_cleanup(&sensor->ssds[i].sd.entity); smiapp_remove() 3127 smiapp_cleanup(sensor); smiapp_remove()
|
H A D | smiapp-quirk.h | 27 * @limits: Replace sensor->limits with values which can't be read from 28 * sensor registers. Called the first time the sensor is powered up. 29 * @post_poweron: Called always after the sensor has been fully powered on. 34 * also appropriate for adding sensor specific controls, for instance. 48 int (*limits)(struct smiapp_sensor *sensor); 49 int (*post_poweron)(struct smiapp_sensor *sensor); 50 int (*pre_streamon)(struct smiapp_sensor *sensor); 51 int (*post_streamoff)(struct smiapp_sensor *sensor); 52 unsigned long (*pll_flags)(struct smiapp_sensor *sensor); 53 int (*init)(struct smiapp_sensor *sensor); 54 int (*reg_access)(struct smiapp_sensor *sensor, bool write, u32 *reg, 66 void smiapp_replace_limit(struct smiapp_sensor *sensor, 75 #define smiapp_call_quirk(sensor, _quirk, ...) \ 76 ((sensor)->minfo.quirk && \ 77 (sensor)->minfo.quirk->_quirk ? \ 78 (sensor)->minfo.quirk->_quirk(sensor, ##__VA_ARGS__) : 0) 80 #define smiapp_needs_quirk(sensor, _quirk) \ 81 ((sensor)->minfo.quirk ? \ 82 (sensor)->minfo.quirk->flags & _quirk : 0)
|
H A D | smiapp-quirk.c | 23 static int smiapp_write_8(struct smiapp_sensor *sensor, u16 reg, u8 val) smiapp_write_8() argument 25 return smiapp_write(sensor, SMIAPP_REG_MK_U8(reg), val); smiapp_write_8() 28 static int smiapp_write_8s(struct smiapp_sensor *sensor, smiapp_write_8s() argument 31 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_write_8s() 35 rval = smiapp_write_8(sensor, regs->reg, regs->val); smiapp_write_8s() 47 void smiapp_replace_limit(struct smiapp_sensor *sensor, smiapp_replace_limit() argument 50 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_replace_limit() 55 sensor->limits[limit] = val; smiapp_replace_limit() 58 static int jt8ew9_limits(struct smiapp_sensor *sensor) jt8ew9_limits() argument 60 if (sensor->minfo.revision_number_major < 0x03) jt8ew9_limits() 61 sensor->frame_skip = 1; jt8ew9_limits() 65 smiapp_replace_limit(sensor, SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_MIN, 59); jt8ew9_limits() 67 sensor, SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_MAX, 6000); jt8ew9_limits() 72 static int jt8ew9_post_poweron(struct smiapp_sensor *sensor) jt8ew9_post_poweron() argument 107 return smiapp_write_8s(sensor, regs, ARRAY_SIZE(regs)); jt8ew9_post_poweron() 115 static int imx125es_post_poweron(struct smiapp_sensor *sensor) imx125es_post_poweron() argument 128 return smiapp_write_8s(sensor, regs, ARRAY_SIZE(regs)); imx125es_post_poweron() 135 static int jt8ev1_limits(struct smiapp_sensor *sensor) jt8ev1_limits() argument 137 smiapp_replace_limit(sensor, SMIAPP_LIMIT_X_ADDR_MAX, 4271); jt8ev1_limits() 138 smiapp_replace_limit(sensor, jt8ev1_limits() 144 static int jt8ev1_post_poweron(struct smiapp_sensor *sensor) jt8ev1_post_poweron() argument 146 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); jt8ev1_post_poweron() 154 { 0x3301, 0x06 }, /* For analog bias for sensor */ jt8ev1_post_poweron() 177 rval = smiapp_write_8s(sensor, regs, ARRAY_SIZE(regs)); jt8ev1_post_poweron() 181 switch (sensor->platform_data->ext_clk) { jt8ev1_post_poweron() 183 return smiapp_write_8s(sensor, regs_96, jt8ev1_post_poweron() 187 sensor->platform_data->ext_clk); jt8ev1_post_poweron() 192 static int jt8ev1_pre_streamon(struct smiapp_sensor *sensor) jt8ev1_pre_streamon() argument 194 return smiapp_write_8(sensor, 0x3328, 0x00); jt8ev1_pre_streamon() 197 static int jt8ev1_post_streamoff(struct smiapp_sensor *sensor) jt8ev1_post_streamoff() argument 202 rval = smiapp_write_8(sensor, 0x3205, 0x04); jt8ev1_post_streamoff() 210 rval = smiapp_write_8(sensor, 0x3205, 0x00); jt8ev1_post_streamoff() 214 return smiapp_write_8(sensor, 0x3328, 0x80); jt8ev1_post_streamoff() 217 static int jt8ev1_init(struct smiapp_sensor *sensor) jt8ev1_init() argument 219 sensor->pll.flags |= SMIAPP_PLL_FLAG_OP_PIX_CLOCK_PER_LANE; jt8ev1_init() 232 static int tcm8500md_limits(struct smiapp_sensor *sensor) tcm8500md_limits() argument 234 smiapp_replace_limit(sensor, SMIAPP_LIMIT_MIN_PLL_IP_FREQ_HZ, 2700000); tcm8500md_limits()
|
H A D | smiapp-regs.c | 75 static int ____smiapp_read(struct smiapp_sensor *sensor, u16 reg, ____smiapp_read() argument 78 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); ____smiapp_read() 134 static int ____smiapp_read_8only(struct smiapp_sensor *sensor, u16 reg, ____smiapp_read_8only() argument 145 rval = ____smiapp_read(sensor, reg + i, 1, &val8); ____smiapp_read_8only() 158 static int __smiapp_read(struct smiapp_sensor *sensor, u32 reg, u32 *val, __smiapp_read() argument 161 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); __smiapp_read() 170 rval = ____smiapp_read(sensor, SMIAPP_REG_ADDR(reg), len, val); __smiapp_read() 172 rval = ____smiapp_read_8only(sensor, SMIAPP_REG_ADDR(reg), len, __smiapp_read() 183 int smiapp_read_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 *val) smiapp_read_no_quirk() argument 186 sensor, reg, val, smiapp_read_no_quirk() 187 smiapp_needs_quirk(sensor, smiapp_read_no_quirk() 191 int smiapp_read(struct smiapp_sensor *sensor, u32 reg, u32 *val) smiapp_read() argument 196 rval = smiapp_call_quirk(sensor, reg_access, false, ®, val); smiapp_read() 202 return smiapp_read_no_quirk(sensor, reg, val); smiapp_read() 205 int smiapp_read_8only(struct smiapp_sensor *sensor, u32 reg, u32 *val) smiapp_read_8only() argument 210 rval = smiapp_call_quirk(sensor, reg_access, false, ®, val); smiapp_read_8only() 216 return __smiapp_read(sensor, reg, val, true); smiapp_read_8only() 219 int smiapp_write_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 val) smiapp_write_no_quirk() argument 221 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); smiapp_write_no_quirk() 263 * Due to unknown reason sensor stops responding. This smiapp_write_no_quirk() 271 "sensor i2c stall encountered. " smiapp_write_no_quirk() 289 int smiapp_write(struct smiapp_sensor *sensor, u32 reg, u32 val) smiapp_write() argument 293 rval = smiapp_call_quirk(sensor, reg_access, true, ®, &val); smiapp_write() 299 return smiapp_write_no_quirk(sensor, reg, val); smiapp_write()
|
H A D | smiapp-regs.h | 38 int smiapp_read_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 *val); 39 int smiapp_read(struct smiapp_sensor *sensor, u32 reg, u32 *val); 40 int smiapp_read_8only(struct smiapp_sensor *sensor, u32 reg, u32 *val); 41 int smiapp_write_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 val); 42 int smiapp_write(struct smiapp_sensor *sensor, u32 reg, u32 val);
|
H A D | smiapp.h | 172 struct smiapp_sensor *sensor; member in struct:smiapp_subdev 218 u8 hvflip_inv_mask; /* H/VFLIP inversion due to sensor orientation */ 255 (to_smiapp_subdev(_sd)->sensor)
|
/linux-4.1.27/drivers/staging/iio/gyro/ |
H A D | Makefile | 2 # Makefile for digital gyroscope sensor drivers
|
/linux-4.1.27/drivers/iio/common/ssp_sensors/ |
H A D | Makefile | 2 # Makefile for SSP sensor drivers and commons.
|
H A D | ssp_dev.c | 89 "Sync sensor nr: %d fail\n", i); ssp_sync_available_sensors() 208 * ssp_get_sensor_delay() - gets sensor data acquisition period 210 * @type: SSP sensor type 221 * ssp_enable_sensor() - enables data acquisition for sensor 223 * @type: SSP sensor type 247 dev_err(&data->spi->dev, "Enabling sensor failed\n"); ssp_enable_sensor() 261 "Changing sensor delay failed\n"); ssp_enable_sensor() 283 * ssp_change_delay() - changes data acquisition for sensor 285 * @type: SSP sensor type 303 dev_err(&data->spi->dev, "Changing sensor delay failed\n"); ssp_change_delay() 314 * ssp_disable_sensor() - disables sensor 317 * @type: SSP sensor type 334 dev_err(&data->spi->dev, "Remove sensor fail\n"); ssp_disable_sensor() 514 * @type: ssp sensor type
|
H A D | ssp_iio.c | 74 * @len: sensor data length
|
/linux-4.1.27/drivers/iio/common/st_sensors/ |
H A D | Makefile | 2 # Makefile for the STMicroelectronics sensor common modules.
|
H A D | st_sensors_i2c.c | 84 * @client: the I2C client device for the sensor 87 * used by this sensor. 90 * name for a certain sensor device, so that the rest of the autodetection can
|
/linux-4.1.27/drivers/iio/gyro/ |
H A D | Makefile | 2 # Makefile for industrial I/O gyroscope sensor drivers 13 obj-$(CONFIG_HID_SENSOR_GYRO_3D) += hid-sensor-gyro-3d.o
|
/linux-4.1.27/drivers/iio/magnetometer/ |
H A D | Makefile | 2 # Makefile for industrial I/O Magnetometer sensor drivers 8 obj-$(CONFIG_HID_SENSOR_MAGNETOMETER_3D) += hid-sensor-magn-3d.o
|
H A D | hid-sensor-magn-3d.c | 26 #include <linux/hid-sensor-hub.h> 32 #include "../common/hid-sensors/hid-sensor-trigger.h" 50 /* dynamically sized array to hold sensor values */ 52 /* array of pointers to sensor value */ 320 /* Check if usage attribute exists in the sensor hub device */ magn_3d_parse_report()
|
/linux-4.1.27/drivers/input/misc/ |
H A D | mpu3050.c | 152 * @client: i2c address of sensor 155 * Return the converted X Y and Z co-ordinates from the sensor device 172 * @client: i2c client for the sensor 198 struct mpu3050_sensor *sensor = input_get_drvdata(input); mpu3050_input_open() local 201 pm_runtime_get(sensor->dev); mpu3050_input_open() 204 error = i2c_smbus_write_byte_data(sensor->client, MPU3050_INT_CFG, mpu3050_input_open() 209 pm_runtime_put(sensor->dev); mpu3050_input_open() 225 struct mpu3050_sensor *sensor = input_get_drvdata(input); mpu3050_input_close() local 227 pm_runtime_put(sensor->dev); mpu3050_input_close() 233 * @data: the sensor 236 * the sensor data and generate an input event for it. 240 struct mpu3050_sensor *sensor = data; mpu3050_interrupt_thread() local 243 mpu3050_read_xyz(sensor->client, &axis); mpu3050_interrupt_thread() 245 input_report_abs(sensor->idev, ABS_X, axis.x); mpu3050_interrupt_thread() 246 input_report_abs(sensor->idev, ABS_Y, axis.y); mpu3050_interrupt_thread() 247 input_report_abs(sensor->idev, ABS_Z, axis.z); mpu3050_interrupt_thread() 248 input_sync(sensor->idev); mpu3050_interrupt_thread() 255 * @sensor: the sensor 259 static int mpu3050_hw_init(struct mpu3050_sensor *sensor) mpu3050_hw_init() argument 261 struct i2c_client *client = sensor->client; mpu3050_hw_init() 303 * The I2C layer calls us when it believes a sensor is present at this 311 struct mpu3050_sensor *sensor; mpu3050_probe() local 316 sensor = kzalloc(sizeof(struct mpu3050_sensor), GFP_KERNEL); mpu3050_probe() 318 if (!sensor || !idev) { mpu3050_probe() 324 sensor->client = client; mpu3050_probe() 325 sensor->dev = &client->dev; mpu3050_probe() 326 sensor->idev = idev; mpu3050_probe() 359 input_set_drvdata(idev, sensor); mpu3050_probe() 363 error = mpu3050_hw_init(sensor); mpu3050_probe() 370 "mpu3050", sensor); mpu3050_probe() 385 i2c_set_clientdata(client, sensor); mpu3050_probe() 390 free_irq(client->irq, sensor); mpu3050_probe() 395 kfree(sensor); mpu3050_probe() 400 * mpu3050_remove - remove a sensor 401 * @client: i2c client of sensor being removed 403 * Our sensor is going away, clean up the resources. 407 struct mpu3050_sensor *sensor = i2c_get_clientdata(client); mpu3050_remove() local 412 free_irq(client->irq, sensor); mpu3050_remove() 413 input_unregister_device(sensor->idev); mpu3050_remove() 414 kfree(sensor); mpu3050_remove()
|
H A D | ad714x.c | 246 * The response of a sensor is defined by the absolute number of codes 280 * The formulae are very straight forward. It uses the sensor with the 282 * When Sensor 0 has the highest response, only sensor 0 and sensor 1 283 * are used in the calculations. Similarly when the last sensor has the 284 * highest response, only the last sensor and the second last sensors 383 /* When the user lifts off the sensor, configure ad714x_slider_state_machine() 403 * on the sensor values. To calculate the position, we first determine the 404 * sensor that has the greatest response among the 8 sensors that constitutes 406 * sensor with the highest response and we apply weights to these sensors. 443 * on the sensor values. To calculate the position, we first determine the 444 * sensor that has the greatest response among the sensors that constitutes 446 * sensor with the highest response and we apply weights to these sensors. The 556 /* When the user lifts off the sensor, configure ad714x_wheel_state_machine() 611 * If 2 fingers are touching the sensor then 2 peaks can be observed in the 686 * End points are detected on the 4 edges of the touchpad sensor. The 689 * percent between the sensor on the edge and the adjacent one. The 853 /* When the user lifts off the sensor, configure ad714x_touchpad_state_machine()
|
/linux-4.1.27/include/media/ |
H A D | s3c_camif.h | 18 * struct s3c_camif_sensor_info - an image sensor description 19 * @i2c_board_info: pointer to an I2C sensor subdevice board info 20 * @clock_frequency: frequency of the clock the host provides to a sensor 22 * @i2c_bus_num: i2c control bus id the sensor is attached to 36 struct s3c_camif_sensor_info sensor; member in struct:s3c_camif_plat_data
|
H A D | mt9v011.h | 1 /* mt9v011 sensor
|
H A D | mt9v022.h | 2 * mt9v022 sensor
|
H A D | m5mols.h | 2 * Driver header for M-5MOLS 8M Pixel camera sensor with ISP 25 * the sensor's supply regulators
|
H A D | sr030pc30.h | 2 * Driver header for SR030PC30 camera sensor
|
H A D | s5k6aa.h | 2 * S5K6AAFX camera sensor driver header 31 * the sensor off 32 * @mclk_frequency: sensor's master clock frequency in Hz
|
H A D | noon010pc30.h | 2 * Driver header for NOON010PC30L camera sensor chip.
|
H A D | ov9650.h | 15 * @mclk_frequency: the sensor's master clock frequency in Hz
|
H A D | s5k4ecgx.h | 2 * S5K4ECGX image sensor header file
|
H A D | smiapp.h | 44 * corrected by giving a default H-FLIP and V-FLIP in the sensor readout. 69 uint32_t ext_clk; /* sensor external clk */
|
H A D | exynos-fimc.h | 69 * @sensor_bus_type: image sensor bus type, MIPI, ITU-R BT.601 etc. 70 * @flags: the parallel sensor bus flags defining signals polarity (V4L2_MBUS_*) 83 * frame capture mode when there is only one VSYNC pulse issued by the sensor
|
H A D | s5c73m3.h | 35 * @mclk_frequency: sensor's master clock frequency in Hz
|
H A D | si4713.h | 18 /* The SI4713 I2C sensor chip has a fixed slave address of 0xc6 or 0x22. */
|
H A D | soc_camera.h | 146 /* sensor driver private platform data */ 158 /* Optional callbacks to power on or off and reset the sensor */ 218 /* Optional callbacks to power on or off and reset the sensor */ 289 * struct soc_camera_format_xlate - match between host and sensor formats 290 * @code: code of a sensor provided format 293 * Host and sensor translation structure. Used in table of host and sensor
|
/linux-4.1.27/drivers/media/usb/gspca/m5602/ |
H A D | m5602_core.c | 105 if (!len || len > sd->sensor->i2c_regW) m5602_read_sensor() 113 sd->sensor->i2c_slave_id); m5602_read_sensor() 125 if (sd->sensor->i2c_regW == 1) { m5602_read_sensor() 142 PDEBUG(D_CONF, "Reading sensor register " m5602_read_sensor() 157 /* No sensor with a data width larger than 16 bits has yet been seen */ m5602_write_sensor() 158 if (len > sd->sensor->i2c_regW || !len) m5602_write_sensor() 164 buf[11] = sd->sensor->i2c_slave_id; m5602_write_sensor() 167 /* Special case larger sensor writes */ m5602_write_sensor() 175 PDEBUG(D_CONF, "Writing sensor register 0x%x with 0x%x", m5602_write_sensor() 209 sd->sensor = &po1030; m5602_probe_sensor() 210 if (!sd->sensor->probe(sd)) m5602_probe_sensor() 213 /* Try the mt9m111 sensor */ m5602_probe_sensor() 214 sd->sensor = &mt9m111; m5602_probe_sensor() 215 if (!sd->sensor->probe(sd)) m5602_probe_sensor() 219 sd->sensor = &s5k4aa; m5602_probe_sensor() 220 if (!sd->sensor->probe(sd)) m5602_probe_sensor() 224 sd->sensor = &ov9650; m5602_probe_sensor() 225 if (!sd->sensor->probe(sd)) m5602_probe_sensor() 229 sd->sensor = &ov7660; m5602_probe_sensor() 230 if (!sd->sensor->probe(sd)) m5602_probe_sensor() 234 sd->sensor = &s5k83a; m5602_probe_sensor() 235 if (!sd->sensor->probe(sd)) m5602_probe_sensor() 238 /* More sensor probe function goes here */ m5602_probe_sensor() 239 pr_info("Failed to find a sensor\n"); m5602_probe_sensor() 240 sd->sensor = NULL; m5602_probe_sensor() 254 err = sd->sensor->init(sd); m5602_init() 263 if (!sd->sensor->init_controls) m5602_init_controls() 266 return sd->sensor->init_controls(sd); m5602_init_controls() 278 if (sd->sensor->start) m5602_start_transfer() 279 sd->sensor->start(sd); m5602_start_transfer() 348 /* Run the sensor specific end transfer sequence */ m5602_stop_transfer() 349 if (sd->sensor->stop) m5602_stop_transfer() 350 sd->sensor->stop(sd); m5602_stop_transfer() 377 /* Probe sensor */ m5602_configure() 404 if (sd->sensor->disconnect) m5602_disconnect() 405 sd->sensor->disconnect(sd); m5602_disconnect() 429 "forces detection of a sensor, " 437 MODULE_PARM_DESC(dump_sensor, "Dumps all usb sensor registers " 438 "at startup providing a sensor is found");
|
H A D | m5602_sensor.h | 45 /* Defines the name of a sensor */ 48 /* What i2c address the sensor is connected to */ 54 /* Probes if the sensor is connected */
|
H A D | m5602_mt9m111.c | 2 * Driver for the mt9m111 sensor 63 pr_info("Forcing a %s sensor\n", mt9m111.name); mt9m111_probe() 66 /* If we want to force another sensor, don't try to probe this mt9m111_probe() 71 PDEBUG(D_PROBE, "Probing for a mt9m111 sensor"); mt9m111_probe() 91 pr_info("Detected a mt9m111 sensor\n"); mt9m111_probe() 108 /* Init the sensor */ mt9m111_init() 246 sd->sensor = NULL; mt9m111_disconnect() 429 pr_info("Dumping the mt9m111 sensor core registers\n"); mt9m111_dump_registers()
|
H A D | m5602_po1030.c | 2 * Driver for the po1030 sensor 62 pr_info("Forcing a %s sensor\n", po1030.name); po1030_probe() 65 /* If we want to force another sensor, don't try to probe this po1030_probe() 70 PDEBUG(D_PROBE, "Probing for a po1030 sensor"); po1030_probe() 86 pr_info("Detected a po1030 sensor\n"); po1030_probe() 102 /* Init the sensor */ po1030_init() 443 sd->sensor = NULL; po1030_disconnect() 493 pr_info("Dumping the po1030 sensor core registers\n"); po1030_dump_registers()
|
H A D | m5602_s5k83a.c | 2 * Driver for the s5k83a sensor 58 pr_info("Forcing a %s sensor\n", s5k83a.name); s5k83a_probe() 61 /* If we want to force another sensor, don't try to probe this s5k83a_probe() 66 PDEBUG(D_PROBE, "Probing for a s5k83a sensor"); s5k83a_probe() 68 /* Preinit the sensor */ s5k83a_probe() 91 pr_info("Detected a s5k83a sensor\n"); s5k83a_probe() 226 /* Preinit the sensor */ s5k83a_start() 254 sd->sensor = NULL; s5k83a_disconnect()
|
H A D | m5602_ov7660.c | 2 * Driver for the ov7660 sensor 51 pr_info("Forcing an %s sensor\n", ov7660.name); ov7660_probe() 54 /* If we want to force another sensor, ov7660_probe() 85 pr_info("Detected a ov7660 sensor\n"); ov7660_probe() 101 /* Init the sensor */ ov7660_init() 171 sd->sensor = NULL; ov7660_disconnect()
|
H A D | m5602_s5k4aa.c | 2 * Driver for the s5k4aa sensor 153 pr_info("Forcing a %s sensor\n", s5k4aa.name); s5k4aa_probe() 156 /* If we want to force another sensor, don't try to probe this s5k4aa_probe() 161 PDEBUG(D_PROBE, "Probing for a s5k4aa sensor"); s5k4aa_probe() 163 /* Preinit the sensor */ s5k4aa_probe() 205 pr_info("Detected a s5k4aa sensor\n"); s5k4aa_probe() 519 sd->sensor = NULL; s5k4aa_disconnect()
|
H A D | m5602_bridge.h | 123 /* A skeleton used for sending messages to the sensor */ 136 /* A pointer to the currently connected sensor */ 137 const struct m5602_sensor *sensor; member in struct:sd
|
H A D | m5602_ov9650.c | 2 * Driver for the ov9650 sensor 27 where the sensor is mounted upside down */ 154 pr_info("Forcing an %s sensor\n", ov9650.name); ov9650_probe() 157 /* If we want to force another sensor, ov9650_probe() 162 PDEBUG(D_PROBE, "Probing for an ov9650 sensor"); ov9650_probe() 164 /* Run the pre-init before probing the sensor */ ov9650_probe() 185 pr_info("Detected an ov9650 sensor\n"); ov9650_probe() 400 sd->sensor = NULL; ov9650_disconnect()
|
H A D | m5602_ov9650.h | 2 * Driver for the ov9650 sensor 204 /* One extra reset is needed in order to make the sensor behave 296 /* Put the sensor in soft sleep mode */
|
/linux-4.1.27/arch/powerpc/platforms/powernv/ |
H A D | opal-sensor.c | 2 * PowerNV sensor code 30 * This will return sensor information to driver based on the requested sensor 83 struct device_node *sensor; opal_sensor_init() local 85 sensor = of_find_node_by_path("/ibm,opal/sensors"); opal_sensor_init() 86 if (!sensor) { opal_sensor_init() 91 pdev = of_platform_device_create(sensor, "opal-sensor", NULL); opal_sensor_init() 92 of_node_put(sensor); opal_sensor_init()
|
/linux-4.1.27/include/linux/i2c/ |
H A D | ds620.h | 7 /* platform data for the DS620 temperature sensor and thermostat */
|
H A D | max6639.h | 6 /* platform data for the MAX6639 temperature sensor and fan control */
|
H A D | mpr121_touchkey.h | 7 * struct mpr121_platform_data - platform data for mpr121 sensor
|
H A D | apds990x.h | 2 * This file is part of the APDS990x sensor driver. 3 * Chip is combined proximity and ambient light sensor. 44 * Values depend on the material above the sensor and the sensor 45 * itself. If the GA is zero, driver will use uncovered sensor default values
|
H A D | bh1770glc.h | 2 * This file is part of the ROHM BH1770GLC / OSRAM SFH7770 sensor driver. 3 * Chip is combined proximity and ambient light sensor.
|
H A D | adp8860.h | 77 #define ADP8860_BL_AMBL_FILT_80ms 0 /* Light sensor filter time */ 108 u8 en_ambl_sens; /* 1 = enable ambient light sensor */ 109 u8 abml_filt; /* Light sensor filter time */
|
H A D | adp8870.h | 74 #define ADP8870_BL_AMBL_FILT_80ms 0 /* Light sensor filter time */ 116 u8 en_ambl_sens; /* 1 = enable ambient light sensor */ 117 u8 abml_filt; /* Light sensor filter time */
|
/linux-4.1.27/drivers/gpu/drm/nouveau/nvkm/subdev/therm/ |
H A D | g84.c | 61 struct nvbios_therm_sensor *sensor = &priv->bios_sensor; g84_therm_program_alarms() local 64 spin_lock_irqsave(&priv->sensor.alarm_program_lock, flags); g84_therm_program_alarms() 70 nv_wr32(therm, 0x20484, sensor->thrs_shutdown.hysteresis); g84_therm_program_alarms() 71 nv_wr32(therm, 0x20480, sensor->thrs_shutdown.temp); g84_therm_program_alarms() 74 nv_wr32(therm, 0x204c4, sensor->thrs_fan_boost.temp); g84_therm_program_alarms() 77 nv_wr32(therm, 0x204c0, sensor->thrs_critical.temp); g84_therm_program_alarms() 80 nv_wr32(therm, 0x20414, sensor->thrs_down_clock.temp); g84_therm_program_alarms() 81 spin_unlock_irqrestore(&priv->sensor.alarm_program_lock, flags); g84_therm_program_alarms() 85 sensor->thrs_fan_boost.temp, sensor->thrs_fan_boost.hysteresis, g84_therm_program_alarms() 86 sensor->thrs_down_clock.temp, g84_therm_program_alarms() 87 sensor->thrs_down_clock.hysteresis, g84_therm_program_alarms() 88 sensor->thrs_critical.temp, sensor->thrs_critical.hysteresis, g84_therm_program_alarms() 89 sensor->thrs_shutdown.temp, sensor->thrs_shutdown.hysteresis); g84_therm_program_alarms() 142 struct nvbios_therm_sensor *sensor = &priv->bios_sensor; g84_therm_intr() local 146 spin_lock_irqsave(&priv->sensor.alarm_program_lock, flags); g84_therm_intr() 153 &sensor->thrs_down_clock, g84_therm_intr() 161 &sensor->thrs_shutdown, g84_therm_intr() 169 &sensor->thrs_fan_boost, g84_therm_intr() 177 &sensor->thrs_critical, g84_therm_intr() 189 spin_unlock_irqrestore(&priv->sensor.alarm_program_lock, flags); g84_therm_intr() 224 priv->base.sensor.program_alarms = g84_therm_program_alarms; g84_therm_ctor()
|
H A D | temp.c | 67 priv->sensor.alarm_state[thrs] = st; nvkm_therm_sensor_set_threshold_state() 76 return priv->sensor.alarm_state[thrs]; nvkm_therm_sensor_get_threshold_state() 170 container_of(alarm, struct nvkm_therm_priv, sensor.therm_poll_alarm); alarm_timer_callback() 171 struct nvbios_therm_sensor *sensor = &priv->bios_sensor; alarm_timer_callback() local 176 spin_lock_irqsave(&priv->sensor.alarm_program_lock, flags); alarm_timer_callback() 178 nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_fan_boost, alarm_timer_callback() 181 nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_down_clock, alarm_timer_callback() 184 nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_critical, alarm_timer_callback() 187 nvkm_therm_threshold_hyst_polling(therm, &sensor->thrs_shutdown, alarm_timer_callback() 190 spin_unlock_irqrestore(&priv->sensor.alarm_program_lock, flags); alarm_timer_callback() 201 struct nvbios_therm_sensor *sensor = &priv->bios_sensor; nvkm_therm_program_alarms_polling() local 205 sensor->thrs_fan_boost.temp, sensor->thrs_fan_boost.hysteresis, nvkm_therm_program_alarms_polling() 206 sensor->thrs_down_clock.temp, nvkm_therm_program_alarms_polling() 207 sensor->thrs_down_clock.hysteresis, nvkm_therm_program_alarms_polling() 208 sensor->thrs_critical.temp, sensor->thrs_critical.hysteresis, nvkm_therm_program_alarms_polling() 209 sensor->thrs_shutdown.temp, sensor->thrs_shutdown.hysteresis); nvkm_therm_program_alarms_polling() 211 alarm_timer_callback(&priv->sensor.therm_poll_alarm); nvkm_therm_program_alarms_polling() 218 priv->sensor.program_alarms(therm); nvkm_therm_sensor_init() 229 ptimer->alarm_cancel(ptimer, &priv->sensor.therm_poll_alarm); nvkm_therm_sensor_fini() 241 nv_info(therm, "internal sensor: %s\n", sensor_avail); nvkm_therm_sensor_preinit() 250 nvkm_alarm_init(&priv->sensor.therm_poll_alarm, alarm_timer_callback); nvkm_therm_sensor_ctor()
|
H A D | nv50.c | 133 struct nvbios_therm_sensor *sensor = &priv->bios_sensor; nv50_temp_get() local 138 /* if the slope or the offset is unset, do no use the sensor */ nv50_temp_get() 139 if (!sensor->slope_div || !sensor->slope_mult || nv50_temp_get() 140 !sensor->offset_num || !sensor->offset_den) nv50_temp_get() 143 core_temp = core_temp * sensor->slope_mult / sensor->slope_div; nv50_temp_get() 144 core_temp = core_temp + sensor->offset_num / sensor->offset_den; nv50_temp_get() 145 core_temp = core_temp + sensor->offset_constant - 8; nv50_temp_get() 173 priv->base.sensor.program_alarms = nvkm_therm_program_alarms_polling; nv50_therm_ctor()
|
H A D | nv40.c | 84 struct nvbios_therm_sensor *sensor = &priv->bios_sensor; nv40_temp_get() local 97 /* if the slope or the offset is unset, do no use the sensor */ nv40_temp_get() 98 if (!sensor->slope_div || !sensor->slope_mult || nv40_temp_get() 99 !sensor->offset_num || !sensor->offset_den) nv40_temp_get() 102 core_temp = core_temp * sensor->slope_mult / sensor->slope_div; nv40_temp_get() 103 core_temp = core_temp + sensor->offset_num / sensor->offset_den; nv40_temp_get() 104 core_temp = core_temp + sensor->offset_constant - 8; nv40_temp_get() 201 priv->base.sensor.program_alarms = nvkm_therm_program_alarms_polling; nv40_therm_ctor()
|
H A D | base.c | 177 /* do not allow automatic fan management if the thermal sensor is nvkm_therm_fan_mode() 249 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 253 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 257 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 261 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 265 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 269 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 273 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 277 priv->sensor.program_alarms(therm); nvkm_therm_attr_set() 338 spin_lock_init(&priv->sensor.alarm_program_lock); nvkm_therm_create_()
|
H A D | ic.c | 34 struct nvbios_therm_sensor *sensor = &priv->bios_sensor; probe_monitoring_device() local 52 info->type, info->addr, sensor->offset_constant); probe_monitoring_device()
|
/linux-4.1.27/drivers/gpu/drm/nouveau/nvkm/subdev/bios/ |
H A D | therm.c | 71 struct nvbios_therm_sensor *sensor) nvbios_therm_sensor_parse() 98 sensor->offset_constant = offset; nvbios_therm_sensor_parse() 104 sensor->thrs_critical.temp = (value & 0xff0) >> 4; nvbios_therm_sensor_parse() 105 sensor->thrs_critical.hysteresis = value & 0xf; nvbios_therm_sensor_parse() 111 sensor->thrs_down_clock.temp = (value & 0xff0) >> 4; nvbios_therm_sensor_parse() 112 sensor->thrs_down_clock.hysteresis = value & 0xf; nvbios_therm_sensor_parse() 118 sensor->thrs_fan_boost.temp = (value & 0xff0) >> 4; nvbios_therm_sensor_parse() 119 sensor->thrs_fan_boost.hysteresis = value & 0xf; nvbios_therm_sensor_parse() 125 sensor->offset_num = value; nvbios_therm_sensor_parse() 130 sensor->offset_den = value; nvbios_therm_sensor_parse() 135 sensor->slope_mult = value; nvbios_therm_sensor_parse() 140 sensor->slope_div = value; nvbios_therm_sensor_parse() 144 sensor->thrs_shutdown.temp = (value & 0xff0) >> 4; nvbios_therm_sensor_parse() 145 sensor->thrs_shutdown.hysteresis = value & 0xf; nvbios_therm_sensor_parse() 69 nvbios_therm_sensor_parse(struct nvkm_bios *bios, enum nvbios_therm_domain domain, struct nvbios_therm_sensor *sensor) nvbios_therm_sensor_parse() argument
|
/linux-4.1.27/drivers/thermal/ |
H A D | dove_thermal.c | 2 * Dove thermal sensor driver 47 void __iomem *sensor; member in struct:dove_thermal_priv 72 /* Reset the sensor */ dove_init_sensor() 77 /* Enable the sensor */ dove_init_sensor() 78 reg = readl_relaxed(priv->sensor); dove_init_sensor() 80 writel(reg, priv->sensor); dove_init_sensor() 82 /* Poll the sensor for the first reading */ dove_init_sensor() 84 reg = readl_relaxed(priv->sensor); dove_init_sensor() 105 "Temperature sensor reading not valid\n"); dove_get_temp() 114 reg = readl_relaxed(priv->sensor); dove_get_temp() 142 priv->sensor = devm_ioremap_resource(&pdev->dev, res); dove_thermal_probe() 143 if (IS_ERR(priv->sensor)) dove_thermal_probe() 144 return PTR_ERR(priv->sensor); dove_thermal_probe() 153 dev_err(&pdev->dev, "Failed to initialize sensor\n"); dove_thermal_probe()
|
H A D | kirkwood_thermal.c | 2 * Kirkwood thermal sensor driver 32 void __iomem *sensor; member in struct:kirkwood_thermal_priv 41 reg = readl_relaxed(priv->sensor); kirkwood_get_temp() 47 "Temperature sensor reading not valid\n"); kirkwood_get_temp() 83 priv->sensor = devm_ioremap_resource(&pdev->dev, res); kirkwood_thermal_probe() 84 if (IS_ERR(priv->sensor)) kirkwood_thermal_probe() 85 return PTR_ERR(priv->sensor); kirkwood_thermal_probe()
|
H A D | armada_thermal.c | 2 * Marvell Armada 370/XP thermal sensor driver 48 void __iomem *sensor; member in struct:armada_thermal_priv 54 /* Initialize the sensor */ 58 /* Test for a valid sensor value (optional) */ 67 /* Register shift and mask to access the sensor temperature */ 87 /* Reset the sensor */ armadaxp_init_sensor() 93 /* Enable the sensor */ armadaxp_init_sensor() 94 reg = readl_relaxed(priv->sensor); armadaxp_init_sensor() 96 writel(reg, priv->sensor); armadaxp_init_sensor() 152 unsigned long reg = readl_relaxed(priv->sensor); armada_is_valid() 167 "Temperature sensor reading not valid\n"); armada_get_temp() 171 reg = readl_relaxed(priv->sensor); armada_get_temp() 272 priv->sensor = devm_ioremap_resource(&pdev->dev, res); armada_thermal_probe() 273 if (IS_ERR(priv->sensor)) armada_thermal_probe() 274 return PTR_ERR(priv->sensor); armada_thermal_probe()
|
H A D | rockchip_thermal.c | 66 /* Per-sensor methods */ 78 #define NUM_SENSORS 2 /* Ignore unused sensor 0 */ 219 * assume that the relationship between sensor readings and rk_tsadcv2_code_to_temp() 346 rockchip_thermal_toggle_sensor(struct rockchip_thermal_sensor *sensor, bool on) rockchip_thermal_toggle_sensor() argument 348 struct thermal_zone_device *tzd = sensor->tzd; rockchip_thermal_toggle_sensor() 371 struct rockchip_thermal_sensor *sensor = _sensor; rockchip_thermal_get_temp() local 372 struct rockchip_thermal_data *thermal = sensor->thermal; rockchip_thermal_get_temp() 373 const struct rockchip_tsadc_chip *tsadc = sensor->thermal->chip; rockchip_thermal_get_temp() 376 retval = tsadc->get_temp(sensor->id, thermal->regs, out_temp); rockchip_thermal_get_temp() 377 dev_dbg(&thermal->pdev->dev, "sensor %d - temp: %ld, retval: %d\n", rockchip_thermal_get_temp() 378 sensor->id, *out_temp, retval); rockchip_thermal_get_temp() 447 struct rockchip_thermal_sensor *sensor, rockchip_thermal_register_sensor() 456 sensor->thermal = thermal; rockchip_thermal_register_sensor() 457 sensor->id = id; rockchip_thermal_register_sensor() 458 sensor->tzd = thermal_zone_of_sensor_register(&pdev->dev, id, sensor, rockchip_thermal_register_sensor() 460 if (IS_ERR(sensor->tzd)) { rockchip_thermal_register_sensor() 461 error = PTR_ERR(sensor->tzd); rockchip_thermal_register_sensor() 462 dev_err(&pdev->dev, "failed to register sensor %d: %d\n", rockchip_thermal_register_sensor() 567 "failed to register CPU thermal sensor: %d\n", error); rockchip_thermal_probe() 576 "failed to register GPU thermal sensor: %d\n", error); rockchip_thermal_probe() 617 struct rockchip_thermal_sensor *sensor = &thermal->sensors[i]; rockchip_thermal_remove() local 619 rockchip_thermal_toggle_sensor(sensor, false); rockchip_thermal_remove() 620 thermal_zone_of_sensor_unregister(&pdev->dev, sensor->tzd); rockchip_thermal_remove() 445 rockchip_thermal_register_sensor(struct platform_device *pdev, struct rockchip_thermal_data *thermal, struct rockchip_thermal_sensor *sensor, enum sensor_id id) rockchip_thermal_register_sensor() argument
|
H A D | tegra_soctherm.c | 217 calculate_tsensor_calibration(const struct tegra_tsensor *sensor, calculate_tsensor_calibration() argument 228 err = tegra_fuse_readl(sensor->calib_fuse_offset, &val); calculate_tsensor_calibration() 240 mult = sensor->config->pdiv * sensor->config->tsample_ate; calculate_tsensor_calibration() 241 div = sensor->config->tsample * sensor->config->pdiv_ate; calculate_tsensor_calibration() 250 therma = div64_s64_precise((s64)therma * sensor->fuse_corr_alpha, calculate_tsensor_calibration() 252 thermb = div64_s64_precise((s64)thermb * sensor->fuse_corr_alpha + calculate_tsensor_calibration() 253 sensor->fuse_corr_beta, (s64)1000000LL); calculate_tsensor_calibration() 262 const struct tegra_tsensor *sensor, enable_tsensor() 265 void __iomem *base = tegra->regs + sensor->base; enable_tsensor() 270 err = calculate_tsensor_calibration(sensor, shared, &calib); enable_tsensor() 274 val = sensor->config->tall << SENSOR_CONFIG0_TALL_SHIFT; enable_tsensor() 277 val = (sensor->config->tsample - 1) << SENSOR_CONFIG1_TSAMPLE_SHIFT; enable_tsensor() 278 val |= sensor->config->tiddq_en << SENSOR_CONFIG1_TIDDQ_EN_SHIFT; enable_tsensor() 279 val |= sensor->config->ten_count << SENSOR_CONFIG1_TEN_COUNT_SHIFT; enable_tsensor() 426 dev_err(&pdev->dev, "failed to register sensor: %d\n", tegra_soctherm_probe() 261 enable_tsensor(struct tegra_soctherm *tegra, const struct tegra_tsensor *sensor, const struct tsensor_shared_calibration *shared) enable_tsensor() argument
|
H A D | imx_thermal.c | 151 * temperature sensor, enable measurements, take a reading, imx_get_temp() 152 * disable measurements, power off the temperature sensor. imx_get_temp() 161 * According to the temp sensor designers, it may require up to ~17us imx_get_temp() 361 dev_err(&pdev->dev, "failed to get sensor regmap: %d\n", ret); imx_get_sensor_data() 367 dev_err(&pdev->dev, "failed to read sensor data: %d\n", ret); imx_get_sensor_data() 372 dev_err(&pdev->dev, "invalid sensor calibration data\n"); imx_get_sensor_data() 378 * [31:20] - sensor value @ 25C imx_get_sensor_data() 379 * Use universal formula now and only need sensor value @ 25C imx_get_sensor_data() 502 dev_err(&pdev->dev, "failed to get sensor data\n"); imx_thermal_probe() 506 /* Make sure sensor is in known good state for measurements */ imx_thermal_probe() 534 * Thermal sensor needs clk on to get correct value, normally imx_thermal_probe() 603 * Need to disable thermal sensor, otherwise, when thermal core imx_thermal_suspend() 604 * try to get temperature before thermal sensor resume, a wrong imx_thermal_suspend() 605 * temperature will be read as the thermal sensor is powered imx_thermal_suspend() 622 /* Enabled thermal sensor after resume */ imx_thermal_resume()
|
H A D | of-thermal.c | 65 * @sensor_data: sensor private data used while reading temperature and trend 82 /* sensor interface */ 392 /*** sensor API ***/ 396 struct device_node *sensor, void *data, thermal_zone_of_add_sensor() 424 * thermal_zone_of_sensor_register - registers a sensor to a DT thermal zone 425 * @dev: a valid struct device pointer of a sensor device. Must contain 426 * a valid .of_node, for the sensor node. 427 * @sensor_id: a sensor identifier, in case the sensor IP has more 434 * tree and look for the zone that refer to the sensor device pointed by 436 * sensor node, the sensor will be added to the DT thermal zone device. 445 * 01 - This function must enqueue the new sensor instead of using 448 * 02 - There must be a way to match the sensor with all thermal zones 481 /* For now, thermal framework supports only 1 sensor per zone */ for_each_child_of_node() 483 "#thermal-sensor-cells", for_each_child_of_node() 491 "%s: too many cells in sensor specifier %d\n", for_each_child_of_node() 518 * thermal_zone_of_sensor_unregister - unregisters a sensor from a DT thermal zone 519 * @dev: a valid struct device pointer of a sensor device. Must contain 520 * a valid .of_node, for the sensor node. 521 * @tzd: a pointer to struct thermal_zone_device where the sensor is registered. 523 * This function removes the sensor callbacks and private data from the 529 * function must search the sensor list based on @dev parameter. 718 * TODO: Missing properties to parse: thermal-sensor-names and coefficients 847 * Cooling devices and sensor devices nodes are supposed to be parsed 395 thermal_zone_of_add_sensor(struct device_node *zone, struct device_node *sensor, void *data, const struct thermal_zone_of_device_ops *ops) thermal_zone_of_add_sensor() argument
|
H A D | spear_thermal.c | 32 /* pointer to base address of the thermal sensor */ 119 /* Enable thermal sensor */ spear_thermal_probe()
|
H A D | rcar_thermal.c | 2 * R-Car THS/TSC thermal sensor driver 178 dev_err(dev, "thermal sensor was broken\n"); rcar_thermal_update_temp() 460 dev_info(dev, "%d sensor probed\n", i); rcar_thermal_probe() 512 MODULE_DESCRIPTION("R-Car THS/TSC thermal sensor driver");
|
/linux-4.1.27/drivers/hwmon/ |
H A D | abx500.h | 39 * @min: sensor temperature min value 40 * @max: sensor temperature max value 41 * @max_hyst: sensor temperature hysteresis value for max limit 42 * @min_alarm: sensor temperature min alarm 43 * @max_alarm: sensor temperature max alarm
|
H A D | asus_atk0110.c | 35 /* Old interface reads the same sensor for fan0 and fan1 */ 190 static int atk_read_value(struct atk_sensor_data *sensor, u64 *value); 323 * sensor id | 324 * sensor id - used for de-muxing the request _inside_ the GITn 455 static int atk_read_value_old(struct atk_sensor_data *sensor, u64 *value) atk_read_value_old() argument 457 struct atk_data *data = sensor->data; atk_read_value_old() 464 switch (sensor->type) { atk_read_value_old() 479 id.integer.value = sensor->id; atk_read_value_old() 608 static int atk_read_value_new(struct atk_sensor_data *sensor, u64 *value) atk_read_value_new() argument 610 struct atk_data *data = sensor->data; atk_read_value_new() 616 obj = atk_gitm(data, sensor->id); atk_read_value_new() 624 * - sensor failure atk_read_value_new() 627 dev_warn(dev, "Read failed, sensor = %#llx\n", sensor->id); atk_read_value_new() 638 static int atk_read_value(struct atk_sensor_data *sensor, u64 *value) atk_read_value() argument 642 if (!sensor->is_valid || atk_read_value() 643 time_after(jiffies, sensor->last_updated + CACHE_TIME)) { atk_read_value() 644 if (sensor->data->old_interface) atk_read_value() 645 err = atk_read_value_old(sensor, value); atk_read_value() 647 err = atk_read_value_new(sensor, value); atk_read_value() 649 sensor->is_valid = true; atk_read_value() 650 sensor->last_updated = jiffies; atk_read_value() 651 sensor->cached_value = *value; atk_read_value() 653 *value = sensor->cached_value; atk_read_value() 851 struct atk_sensor_data *sensor; atk_add_sensor() local 898 dev_warn(dev, "Unknown sensor type: %#llx\n", type); atk_add_sensor() 904 /* sensor is disabled */ atk_add_sensor() 912 sensor = kzalloc(sizeof(*sensor), GFP_KERNEL); atk_add_sensor() 913 if (!sensor) atk_add_sensor() 916 sensor->acpi_name = kstrdup(name->string.pointer, GFP_KERNEL); atk_add_sensor() 917 if (!sensor->acpi_name) { atk_add_sensor() 922 INIT_LIST_HEAD(&sensor->list); atk_add_sensor() 923 sensor->type = type; atk_add_sensor() 924 sensor->data = data; atk_add_sensor() 925 sensor->id = flags->integer.value; atk_add_sensor() 926 sensor->limit1 = limit1->integer.value; atk_add_sensor() 928 sensor->limit2 = limit2->integer.value; atk_add_sensor() 931 sensor->limit2 = sensor->limit1 + limit2->integer.value; atk_add_sensor() 933 snprintf(sensor->input_attr_name, ATTR_NAME_SIZE, atk_add_sensor() 935 atk_init_attribute(&sensor->input_attr, atk_add_sensor() 936 sensor->input_attr_name, atk_add_sensor() 939 snprintf(sensor->label_attr_name, ATTR_NAME_SIZE, atk_add_sensor() 941 atk_init_attribute(&sensor->label_attr, atk_add_sensor() 942 sensor->label_attr_name, atk_add_sensor() 945 snprintf(sensor->limit1_attr_name, ATTR_NAME_SIZE, atk_add_sensor() 947 atk_init_attribute(&sensor->limit1_attr, atk_add_sensor() 948 sensor->limit1_attr_name, atk_add_sensor() 951 snprintf(sensor->limit2_attr_name, ATTR_NAME_SIZE, atk_add_sensor() 953 atk_init_attribute(&sensor->limit2_attr, atk_add_sensor() 954 sensor->limit2_attr_name, atk_add_sensor() 957 list_add(&sensor->list, &data->sensor_list); atk_add_sensor() 962 kfree(sensor); atk_add_sensor() 1392 "No usable sensor detected, bailing out\n"); atk_add()
|
H A D | ibmpowernv.c | 65 {"fan", "ibm,opal-sensor-cooling-fan"}, 66 {"temp", "ibm,opal-sensor-amb-temp"}, 67 {"in", "ibm,opal-sensor-power-supply"}, 68 {"power", "ibm,opal-sensor-power"} 72 u32 id; /* An opaque id of the firmware for each sensor */ 252 if (!of_device_is_compatible(np, "ibm,opal-sensor")) get_sensor_type() 255 if (of_property_read_string(np, "sensor-type", &str)) get_sensor_type() 380 * Newer device trees use a "sensor-data" property for_each_child_of_node() 383 if (of_property_read_u32(np, "sensor-id", &sensor_id) && for_each_child_of_node() 384 of_property_read_u32(np, "sensor-data", &sensor_id)) { for_each_child_of_node() 386 "'sensor-id' missing in the node '%s'\n", for_each_child_of_node() 420 * sensor. for_each_child_of_node() 456 /* Create sysfs attribute data for each sensor found in the DT */ ibmpowernv_probe() 471 .name = "opal-sensor",
|
H A D | ibmpex.c | 162 "Found BMC with sensor interface v%d.%d %d-%02d-%02d on interface %d\n", ibmpex_ver_check() 187 static int ibmpex_query_sensor_name(struct ibmpex_bmc_data *data, int sensor) ibmpex_query_sensor_name() argument 190 data->tx_msg_data[1] = sensor; ibmpex_query_sensor_name() 202 static int ibmpex_query_sensor_data(struct ibmpex_bmc_data *data, int sensor) ibmpex_query_sensor_data() argument 205 data->tx_msg_data[1] = sensor; ibmpex_query_sensor_data() 212 dev_err(data->bmc_device, "Error reading sensor %d.\n", ibmpex_query_sensor_data() 213 sensor); ibmpex_query_sensor_data() 343 int counter, int sensor, int func) create_sensor() 359 sysfs_attr_init(&data->sensors[sensor].attr[func].dev_attr.attr); create_sensor() 360 data->sensors[sensor].attr[func].dev_attr.attr.name = n; create_sensor() 361 data->sensors[sensor].attr[func].dev_attr.attr.mode = S_IRUGO; create_sensor() 362 data->sensors[sensor].attr[func].dev_attr.show = ibmpex_show_sensor; create_sensor() 363 data->sensors[sensor].attr[func].index = sensor; create_sensor() 364 data->sensors[sensor].attr[func].nr = func; create_sensor() 367 &data->sensors[sensor].attr[func].dev_attr); create_sensor() 369 data->sensors[sensor].attr[func].dev_attr.attr.name = NULL; create_sensor() 605 MODULE_DESCRIPTION("IBM PowerExecutive power/temperature sensor driver"); 342 create_sensor(struct ibmpex_bmc_data *data, int type, int counter, int sensor, int func) create_sensor() argument
|
H A D | k8temp.c | 48 u8 sensorsp; /* sensor presence bits - SEL_CORE, SEL_PLACE */ 65 tmp &= ~(SEL_PLACE | SEL_CORE); /* Select sensor 0, core0 */ k8temp_update_device() 70 tmp |= SEL_PLACE; /* Select sensor 1, core0 */ k8temp_update_device() 77 tmp &= ~SEL_PLACE; /* Select sensor 0, core1 */ k8temp_update_device() 84 tmp |= SEL_PLACE; /* Select sensor 1, core1 */ k8temp_update_device() 216 scfg &= ~(SEL_PLACE | SEL_CORE); /* Select sensor 0, core0 */ k8temp_probe() 228 /* now we know if we can change core and/or sensor */ k8temp_probe() 232 scfg &= ~SEL_CORE; /* Select sensor 1, core0 */ k8temp_probe() 241 scfg &= ~SEL_PLACE; /* Select sensor 0, core1 */ k8temp_probe() 258 /* sensor can be changed and reports something */ k8temp_probe()
|
H A D | abituguru.c | 19 * This driver supports the sensor part of the first and second revision of 45 /* max nr of sensors in bank1, a bank1 sensor can be in, temp or nc */ 55 /* uGuru sensor bank 1 flags */ /* Alarm if: */ 62 /* uGuru sensor bank 2 flags */ /* Alarm if: */ 64 /* uGuru sensor bank common flags */ 71 /* Bank1 sensor types */ 183 " 0 volt sensor\n" 184 " 1 temp sensor\n" 224 * of a sensor is a volt or a temp sensor, for bank2 and the pwms its 226 * sysfs entries per sensor, for bank2 and pwms 6. 240 * This array holds 3 entries per sensor for the bank 1 sensor settings 245 * Maximum value for each sensor used for scaling in mV/millidegrees 335 * Send the bank and then sensor address to the uGuru for the next read/write 361 * and send the sensor addr abituguru_send_address() 385 * Read count bytes from sensor sensor_addr in bank bank_addr and store the 403 "read state (bank: %d, sensor: %d)\n", abituguru_read() 417 * Write count bytes from buf to sensor sensor_addr in bank bank_addr, the send 439 "write state (bank: %d, sensor: %d)\n", abituguru_write() 453 "after write (bank: %d, sensor: %d)\n", (int)bank_addr, abituguru_write() 463 "write (bank: %d, sensor: %d)\n", abituguru_write() 477 * Detect sensor type. Temp and Volt sensors are enabled with 479 * This enables us to test what kind of sensor we're dealing with. 481 * alarm for sensor type X and then enabling the sensor as sensor type 482 * X, if we then get an alarm it is a sensor of type X. 494 ABIT_UGURU_DEBUG(2, "assuming sensor type %d for bank1 sensor " abituguru_detect_bank1_sensor_type() 500 /* First read the sensor and the current settings */ abituguru_detect_bank1_sensor_type() 505 /* Test val is sane / usable for sensor type detection. */ abituguru_detect_bank1_sensor_type() 507 pr_warn("bank1-sensor: %d reading (%d) too close to limits, " abituguru_detect_bank1_sensor_type() 508 "unable to determine sensor type, skipping sensor\n", abituguru_detect_bank1_sensor_type() 511 * assume no sensor is there for sensors for which we can't abituguru_detect_bank1_sensor_type() 512 * determine the sensor type because their reading is too close abituguru_detect_bank1_sensor_type() 513 * to their limits, this usually means no sensor is there. abituguru_detect_bank1_sensor_type() 518 ABIT_UGURU_DEBUG(2, "testing bank1 sensor %d\n", (int)sensor_addr); abituguru_detect_bank1_sensor_type() 520 * Volt sensor test, enable volt low alarm, set min value ridiculously abituguru_detect_bank1_sensor_type() 522 * sensor this should always give us an alarm. abituguru_detect_bank1_sensor_type() 555 ABIT_UGURU_DEBUG(2, " found volt sensor\n"); abituguru_detect_bank1_sensor_type() 560 "sensor test, but volt range flag not set\n"); abituguru_detect_bank1_sensor_type() 562 ABIT_UGURU_DEBUG(2, " alarm not raised during volt sensor " abituguru_detect_bank1_sensor_type() 566 * Temp sensor test, enable sensor as a temp sensor, set beep value abituguru_detect_bank1_sensor_type() 568 * If its a temp sensor this should always give us an alarm. abituguru_detect_bank1_sensor_type() 592 ABIT_UGURU_DEBUG(2, " found temp sensor\n"); abituguru_detect_bank1_sensor_type() 597 "sensor test, but temp high flag not set\n"); abituguru_detect_bank1_sensor_type() 599 ABIT_UGURU_DEBUG(2, " alarm not raised during temp sensor " abituguru_detect_bank1_sensor_type() 665 ABIT_UGURU_DEBUG(2, " bank2 sensor %d does not seem " abituguru_detect_no_bank2_sensors() 666 "to be a fan sensor: settings[0] = %02X\n", abituguru_detect_no_bank2_sensors() 674 ABIT_UGURU_DEBUG(2, " bank2 sensor %d does not seem " abituguru_detect_no_bank2_sensors() 675 "to be a fan sensor: the threshold (%d) is " abituguru_detect_no_bank2_sensors() 683 ABIT_UGURU_DEBUG(2, " bank2 sensor %d does not seem " abituguru_detect_no_bank2_sensors() 684 "to be a fan sensor: the threshold (%d) is " abituguru_detect_no_bank2_sensors() 713 * nibble is which temp sensor to use, abituguru_detect_no_pwms() 736 "sensor address\n", i, abituguru_detect_no_pwms() 795 * sensor_device_attribute_2->index: sensor address/offset in the bank 918 * See if the alarm bit for this sensor is set, and if the show_bank1_alarm() 921 * readonly bits in the settings part of the relevant sensor. show_bank1_alarm() 1099 * We need to walk to the temp sensor addresses to find what show_pwm_sensor() 1100 * the userspace id of the configured temp sensor is. show_pwm_sensor() 1341 /* Detect sensor types and fill the sysfs attr for bank1 */ abituguru_probe()
|
H A D | hih6130.c | 1 /* Honeywell HIH-6130/HIH-6131 humidity and temperature sensor driver 61 * @ticks: temperature ticks value received from sensor 76 * @ticks: humidity ticks value received from sensor 113 * While the measurement can be completed in ~40ms the sensor takes hih6130_update_measurements() 118 * We therefore choose to only read the sensor at most once per second. hih6130_update_measurements() 119 * This trades off pointless activity polling the sensor much faster hih6130_update_measurements() 129 * length packets we write one dummy byte to allow sensor hih6130_update_measurements() 266 MODULE_DESCRIPTION("Honeywell HIH-6130 humidity and temperature sensor driver");
|
H A D | ab8500.c | 80 static int ab8500_read_sensor(struct abx500_temp *data, u8 sensor, int *temp) ab8500_read_sensor() argument 85 if (sensor == BAT_CTRL) { ab8500_read_sensor() 87 } else if (sensor == BTEMP_BALL) { ab8500_read_sensor() 90 voltage = ab8500_gpadc_convert(ab8500_data->gpadc, sensor); ab8500_read_sensor()
|
H A D | sht21.c | 1 /* Sensirion SHT21 humidity and temperature sensor driver 20 * http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT21.pdf 59 * @ticks: temperature ticks value received from sensor 74 * @ticks: humidity ticks value received from sensor 225 MODULE_DESCRIPTION("Sensirion SHT21 humidity and temperature sensor driver");
|
H A D | abituguru3.c | 22 * This driver supports the sensor part of revision 3 of the custom Abit uGuru 50 /* uGuru3 sensor bank flags */ /* Alarm if: */ 60 /* sensor types */ 148 /* + 1 -> end of sensors indicated by a sensor with name == NULL */ 166 * automatically. We have max 10 entries per sensor (for in sensors) 183 /* Alarms for all 48 sensors (1 bit per sensor) */ 747 * Read count bytes from sensor sensor_addr in bank bank_addr and store the 844 const struct abituguru3_sensor_info *sensor; show_value() local 849 sensor = &data->sensors[attr->index]; show_value() 853 value = data->settings[sensor->port][attr->nr]; show_value() 855 value = data->value[sensor->port]; show_value() 858 value = (value * sensor->multiplier) / sensor->divisor + show_value() 859 sensor->offset; show_value() 865 if (sensor->type == ABIT_UGURU3_TEMP_SENSOR) show_value() 884 * See if the alarm bit for this sensor is set and if a bitmask is show_alarm() 887 * is stored in a few readonly bits in the settings of the sensor. show_alarm() 1106 /* Read in and temp sensors (3 byte settings / sensor) */ abituguru3_update_device() 1119 /* Read temp sensors (2 byte settings / sensor) */ abituguru3_update_device()
|
H A D | tmp103.c | 2 * Texas Instruments TMP103 SMBus temperature sensor driver 6 * Texas Instruments TMP102 SMBus temperature sensor driver 198 MODULE_DESCRIPTION("Texas Instruments TMP103 temperature sensor driver");
|
H A D | i5500_temp.c | 2 * i5500_temp - Driver for Intel 5500/5520/X58 chipset thermal sensor 148 MODULE_DESCRIPTION("Intel 5500/5520/X58 chipset thermal sensor driver");
|
H A D | ad7314.c | 2 * AD7314 digital temperature sensor driver for AD7314, ADT7301 and ADT7302 170 MODULE_DESCRIPTION("Analog Devices AD7314, ADT7301 and ADT7302 digital temperature sensor driver");
|
H A D | adt7410.c | 2 * ADT7410/ADT7420 digital temperature sensor driver
|
H A D | htu21.c | 2 * Measurement Specialties HTU21D humidity and temperature sensor driver 173 MODULE_DESCRIPTION("MEAS HTU21D humidity and temperature sensor driver");
|
H A D | adt7310.c | 2 * ADT7310/ADT7310 digital temperature sensor driver
|
H A D | k10temp.c | 160 * Erratum 319: The thermal sensor of Socket F/AM2+ processors has_erratum_319() 196 "unreliable CPU thermal sensor; monitoring disabled\n"); k10temp_probe() 200 "unreliable CPU thermal sensor; check erratum 319\n"); k10temp_probe()
|
/linux-4.1.27/drivers/media/platform/exynos4-is/ |
H A D | fimc-is-sensor.h | 37 /* sensor open timeout in ms */ 42 * struct fimc_is_sensor - fimc-is sensor data structure 43 * @drvdata: a pointer to the sensor's parameters data structure
|
H A D | media-dev.h | 57 * source entity (e.g. an image sensor subdevice), a data capture entity 82 * @pdata: sensor's atrributes passed as media device's platform data 84 * @subdev: image sensor v4l2 subdev 85 * @host: fimc device the sensor is currently linked to 87 * This data structure applies to image sensor and the writeback subdevs. 105 * @sensor: array of registered sensor subdevs 107 * @camclk: external sensor clock information 120 * @slock: spinlock protecting @sensor array 124 struct fimc_sensor_info sensor[FIMC_MAX_SENSORS]; member in struct:fimc_md
|
H A D | media-dev.c | 42 /* Set up image sensor subdev -> FIMC capture node notifications. */ __setup_sensor_notification() 44 struct v4l2_subdev *sensor, __setup_sensor_notification() 51 src_inf = v4l2_get_subdev_hostdata(sensor); __setup_sensor_notification() 72 struct v4l2_subdev *sensor = NULL; fimc_pipeline_prepare() local 98 sensor = sd; fimc_pipeline_prepare() 123 if (sensor && p->subdevs[IDX_FIMC]) fimc_pipeline_prepare() 124 __setup_sensor_notification(fmd, sensor, p->subdevs[IDX_FIMC]); fimc_pipeline_prepare() 191 * of all pipeline subdevs and the sensor clock 233 * __fimc_pipeline_close - disable the sensor clock and pipeline power 236 * Disable power of all subdevs and turn the external sensor clock off. 246 pr_warn("%s(): No sensor subdev\n", __func__); __fimc_pipeline_close() 328 /* Parse port node and register as a sub-device any sensor specified there. */ fimc_md_parse_port_node() 333 struct fimc_source_info *pd = &fmd->sensor[index].pdata; fimc_md_parse_port_node() 365 * the sensor's clock frequency is needed. fimc_md_parse_port_node() 387 if (WARN_ON(index >= ARRAY_SIZE(fmd->sensor))) fimc_md_parse_port_node() 390 fmd->sensor[index].asd.match_type = V4L2_ASYNC_MATCH_OF; fimc_md_parse_port_node() 391 fmd->sensor[index].asd.match.of.node = rem; fimc_md_parse_port_node() 392 fmd->async_subdevs[index] = &fmd->sensor[index].asd; fimc_md_parse_port_node() 698 * @sensor: sensor subdev linked to FIMC[fimc_id] entity, may be null 704 struct v4l2_subdev *sensor, __fimc_md_create_fimc_sink_links() 712 if (sensor) { __fimc_md_create_fimc_sink_links() 713 si = v4l2_get_subdev_hostdata(sensor); __fimc_md_create_fimc_sink_links() 714 /* Skip direct FIMC links in the logical FIMC-IS sensor path */ __fimc_md_create_fimc_sink_links() 724 * interface. Skip creating a link from sensor for those. __fimc_md_create_fimc_sink_links() 834 * Parallel interface sensor entities are connected directly to FIMC capture 838 * are created by default between each subsequent registered sensor and 846 struct v4l2_subdev *sensor, *csis; fimc_md_create_links() local 853 if (fmd->sensor[i].subdev == NULL) fimc_md_create_links() 856 sensor = fmd->sensor[i].subdev; fimc_md_create_links() 857 pdata = v4l2_get_subdev_hostdata(sensor); fimc_md_create_links() 875 pad = sensor->entity.num_pads - 1; fimc_md_create_links() 876 ret = media_entity_create_link(&sensor->entity, pad, fimc_md_create_links() 884 sensor->entity.name, csis->entity.name); fimc_md_create_links() 887 csi_sensors[pdata->mux_id] = sensor; fimc_md_create_links() 891 source = &sensor->entity; fimc_md_create_links() 904 ret = __fimc_md_create_fimc_sink_links(fmd, source, sensor, fimc_md_create_links() 914 sensor = csi_sensors[i]; fimc_md_create_links() 917 ret = __fimc_md_create_fimc_sink_links(fmd, source, sensor, fimc_md_create_links() 947 * The peripheral sensor and CAM_BLK (PIXELASYNCMx) clocks management. 1278 /* Find platform data for this sensor subdev */ subdev_notifier_bound() 1279 for (i = 0; i < ARRAY_SIZE(fmd->sensor); i++) subdev_notifier_bound() 1280 if (fmd->sensor[i].asd.match.of.node == subdev->dev->of_node) subdev_notifier_bound() 1281 si = &fmd->sensor[i]; subdev_notifier_bound() 1295 v4l2_info(&fmd->v4l2_dev, "Registered sensor subdevice: %s (%d)\n", subdev_notifier_bound() 43 __setup_sensor_notification(struct fimc_md *fmd, struct v4l2_subdev *sensor, struct v4l2_subdev *fimc_sd) __setup_sensor_notification() argument 702 __fimc_md_create_fimc_sink_links(struct fimc_md *fmd, struct media_entity *source, struct v4l2_subdev *sensor, int pad, int link_mask) __fimc_md_create_fimc_sink_links() argument
|
H A D | Makefile | 6 exynos-fimc-is-objs := fimc-is.o fimc-isp.o fimc-is-sensor.o fimc-is-regs.o
|
H A D | fimc-is-sensor.c | 12 #include "fimc-is-sensor.h"
|
H A D | fimc-capture.c | 509 * any controls inherited from the sensor subdev. fimc_capture_open() 811 * host and sensor does not exist. fimc_pipeline_try_format() 867 * fimc_get_sensor_frame_desc - query the sensor for media bus frame parameters 868 * @sensor: pointer to the sensor subdev 874 static int fimc_get_sensor_frame_desc(struct v4l2_subdev *sensor, fimc_get_sensor_frame_desc() argument 885 pad = sensor->entity.num_pads - 1; fimc_get_sensor_frame_desc() 887 ret = v4l2_subdev_call(sensor, pad, set_frame_desc, pad, &fd); fimc_get_sensor_frame_desc() 889 ret = v4l2_subdev_call(sensor, pad, get_frame_desc, pad, &fd); fimc_get_sensor_frame_desc() 901 v4l2_err(sensor->v4l2_dev, "Unsupported buffer size: %u\n", fimc_get_sensor_frame_desc() 963 /* Try to match format at the host and the sensor */ __video_try_or_set_format() 988 struct v4l2_subdev *sensor; __video_try_or_set_format() local 992 sensor = __fimc_md_get_subdev(ve->pipe, IDX_SENSOR); __video_try_or_set_format() 993 if (sensor) __video_try_or_set_format() 994 fimc_get_sensor_frame_desc(sensor, pix->plane_fmt, __video_try_or_set_format() 1222 * sensor or other data source, e.g. FIMC-IS. fimc_cap_streamon() 1398 struct v4l2_subdev *sensor; fimc_link_setup() local 1423 /* Inherit V4L2 controls from the image sensor subdev. */ fimc_link_setup() 1424 sensor = fimc_find_remote_sensor(&vc->subdev.entity); fimc_link_setup() 1425 if (sensor == NULL) fimc_link_setup() 1429 sensor->ctrl_handler, NULL); fimc_link_setup() 1437 * fimc_sensor_notify - v4l2_device notification from a sensor subdev 1442 * The End Of Frame notification sent by sensor subdev in its still capture 1443 * mode. If there is only a single VSYNC generated by the sensor at the 1719 /* Set default format at the sensor and host interface */ fimc_capture_set_default_format()
|
H A D | fimc-is.c | 167 struct fimc_is_sensor *sensor = &is->sensor[index]; fimc_is_parse_sensor_config() local 171 sensor->drvdata = fimc_is_sensor_get_drvdata(node); fimc_is_parse_sensor_config() 172 if (!sensor->drvdata) { fimc_is_parse_sensor_config() 194 sensor->i2c_bus = tmp - FIMC_INPUT_MIPI_CSI2_0; fimc_is_parse_sensor_config() 618 struct fimc_is_sensor *sensor) fimc_is_hw_open_sensor() 636 mcuctl_write(sensor->drvdata->id, is, MCUCTL_REG_ISSR(2)); fimc_is_hw_open_sensor() 637 mcuctl_write(sensor->i2c_bus, is, MCUCTL_REG_ISSR(3)); fimc_is_hw_open_sensor() 643 sensor->drvdata->open_timeout); fimc_is_hw_open_sensor() 657 /* Sensor initialization. Only one sensor is currently supported. */ fimc_is_hw_initialize() 658 ret = fimc_is_hw_open_sensor(is, &is->sensor[0]); fimc_is_hw_initialize() 617 fimc_is_hw_open_sensor(struct fimc_is *is, struct fimc_is_sensor *sensor) fimc_is_hw_open_sensor() argument
|
H A D | fimc-is-param.c | 34 #include "fimc-is-sensor.h" 54 dst = &is->is_p_region->parameter.sensor.frame_rate; __fimc_is_hw_update_param_sensor_framerate() 55 src = &is->config[is->config_index].sensor.frame_rate; __fimc_is_hw_update_param_sensor_framerate() 258 switch (is->sensor->drvdata->id) { fimc_is_hw_get_sensor_max_framerate() 269 struct sensor_param *sensor; __is_set_sensor() local 272 sensor = &is->config[index].sensor; __is_set_sensor() 276 sensor->frame_rate.frame_rate = __is_set_sensor() 281 sensor->frame_rate.frame_rate = fps; __is_set_sensor() 699 if (is->sensor->test_pattern) fimc_is_set_initial_params()
|
H A D | fimc-is-regs.c | 18 #include "fimc-is-sensor.h" 124 pr_debug("setting sensor index to: %d\n", is->sensor_index); fimc_is_hw_set_sensor_num()
|
H A D | fimc-is.h | 30 #include "fimc-is-sensor.h" 223 struct sensor_param sensor; member in struct:chain_config 256 struct fimc_is_sensor sensor[FIMC_IS_SENSORS_NUM]; member in struct:fimc_is
|
H A D | fimc-lite.h | 120 * @sensor: sensor subdev attached to FIMC-LITE directly or through MIPI-CSIS 155 struct v4l2_subdev *sensor; member in struct:fimc_lite
|
/linux-4.1.27/drivers/hwmon/pmbus/ |
H A D | pmbus_core.c | 60 char name[PMBUS_NAME_SIZE]; /* sysfs sensor name */ 64 enum pmbus_sensor_classes class; /* sensor class */ 65 bool update; /* runtime sensor update needed */ 389 struct pmbus_sensor *sensor; pmbus_update_device() local 420 for (sensor = data->sensors; sensor; sensor = sensor->next) { pmbus_update_device() 421 if (!data->valid || sensor->update) pmbus_update_device() 422 sensor->data pmbus_update_device() 424 sensor->page, pmbus_update_device() 425 sensor->reg); pmbus_update_device() 436 * Convert linear sensor values to milli- or micro-units 437 * depending on sensor type. 440 struct pmbus_sensor *sensor) pmbus_reg2data_linear() 446 if (sensor->class == PSC_VOLTAGE_OUT) { /* LINEAR16 */ pmbus_reg2data_linear() 447 exponent = data->exponent[sensor->page]; pmbus_reg2data_linear() 448 mantissa = (u16) sensor->data; pmbus_reg2data_linear() 450 exponent = ((s16)sensor->data) >> 11; pmbus_reg2data_linear() 451 mantissa = ((s16)((sensor->data & 0x7ff) << 5)) >> 5; pmbus_reg2data_linear() 457 if (sensor->class != PSC_FAN) pmbus_reg2data_linear() 461 if (sensor->class == PSC_POWER) pmbus_reg2data_linear() 473 * Convert direct sensor values to milli- or micro-units 474 * depending on sensor type. 477 struct pmbus_sensor *sensor) pmbus_reg2data_direct() 479 long val = (s16) sensor->data; pmbus_reg2data_direct() 482 m = data->info->m[sensor->class]; pmbus_reg2data_direct() 483 b = data->info->b[sensor->class]; pmbus_reg2data_direct() 484 R = data->info->R[sensor->class]; pmbus_reg2data_direct() 492 if (sensor->class != PSC_FAN) { pmbus_reg2data_direct() 498 if (sensor->class == PSC_POWER) { pmbus_reg2data_direct() 516 * Convert VID sensor values to milli- or micro-units 517 * depending on sensor type. 521 struct pmbus_sensor *sensor) pmbus_reg2data_vid() 523 long val = sensor->data; pmbus_reg2data_vid() 530 static long pmbus_reg2data(struct pmbus_data *data, struct pmbus_sensor *sensor) pmbus_reg2data() argument 534 switch (data->info->format[sensor->class]) { pmbus_reg2data() 536 val = pmbus_reg2data_direct(data, sensor); pmbus_reg2data() 539 val = pmbus_reg2data_vid(data, sensor); pmbus_reg2data() 543 val = pmbus_reg2data_linear(data, sensor); pmbus_reg2data() 553 struct pmbus_sensor *sensor, long val) pmbus_data2reg_linear() 562 if (sensor->class == PSC_VOLTAGE_OUT) { pmbus_data2reg_linear() 571 if (data->exponent[sensor->page] < 0) pmbus_data2reg_linear() 572 val <<= -data->exponent[sensor->page]; pmbus_data2reg_linear() 574 val >>= data->exponent[sensor->page]; pmbus_data2reg_linear() 585 if (sensor->class == PSC_POWER) pmbus_data2reg_linear() 592 if (sensor->class == PSC_FAN) pmbus_data2reg_linear() 622 struct pmbus_sensor *sensor, long val) pmbus_data2reg_direct() 626 m = data->info->m[sensor->class]; pmbus_data2reg_direct() 627 b = data->info->b[sensor->class]; pmbus_data2reg_direct() 628 R = data->info->R[sensor->class]; pmbus_data2reg_direct() 631 if (sensor->class == PSC_POWER) { pmbus_data2reg_direct() 637 if (sensor->class != PSC_FAN) { pmbus_data2reg_direct() 656 struct pmbus_sensor *sensor, long val) pmbus_data2reg_vid() 664 struct pmbus_sensor *sensor, long val) pmbus_data2reg() 668 switch (data->info->format[sensor->class]) { pmbus_data2reg() 670 regval = pmbus_data2reg_direct(data, sensor, val); pmbus_data2reg() 673 regval = pmbus_data2reg_vid(data, sensor, val); pmbus_data2reg() 677 regval = pmbus_data2reg_linear(data, sensor, val); pmbus_data2reg() 689 * sensor attributes. If specified, those attributes are compared against each 692 * If the sensor attribute pointers are NULL, the function returns true if 695 * If sensor attribute pointers are provided, a comparison against a specified 698 * sensor values referenced by sensor attribute pointers s1 and s2). 759 struct pmbus_sensor *sensor = to_pmbus_sensor(devattr); pmbus_show_sensor() local 761 if (sensor->data < 0) pmbus_show_sensor() 762 return sensor->data; pmbus_show_sensor() 764 return snprintf(buf, PAGE_SIZE, "%ld\n", pmbus_reg2data(data, sensor)); pmbus_show_sensor() 773 struct pmbus_sensor *sensor = to_pmbus_sensor(devattr); pmbus_set_sensor() local 783 regval = pmbus_data2reg(data, sensor, val); pmbus_set_sensor() 784 ret = _pmbus_write_word_data(client, sensor->page, sensor->reg, regval); pmbus_set_sensor() 788 sensor->data = regval; pmbus_set_sensor() 882 struct pmbus_sensor *sensor; pmbus_add_sensor() local 885 sensor = devm_kzalloc(data->dev, sizeof(*sensor), GFP_KERNEL); pmbus_add_sensor() 886 if (!sensor) pmbus_add_sensor() 888 a = &sensor->attribute; pmbus_add_sensor() 890 snprintf(sensor->name, sizeof(sensor->name), "%s%d_%s", pmbus_add_sensor() 892 sensor->page = page; pmbus_add_sensor() 893 sensor->reg = reg; pmbus_add_sensor() 894 sensor->class = class; pmbus_add_sensor() 895 sensor->update = update; pmbus_add_sensor() 896 pmbus_dev_attr_init(a, sensor->name, pmbus_add_sensor() 903 sensor->next = data->sensors; pmbus_add_sensor() 904 data->sensors = sensor; pmbus_add_sensor() 906 return sensor; pmbus_add_sensor() 952 * The pmbus_sensor_attr structure describes one sensor attribute. This 956 u16 reg; /* sensor register */ 959 enum pmbus_sensor_classes class;/* sensor class */ 960 const char *label; /* sensor label */ 961 bool paged; /* true if paged sensor */ 964 u32 func; /* sensor mask */ 965 u32 sfunc; /* sensor status mask */ 439 pmbus_reg2data_linear(struct pmbus_data *data, struct pmbus_sensor *sensor) pmbus_reg2data_linear() argument 476 pmbus_reg2data_direct(struct pmbus_data *data, struct pmbus_sensor *sensor) pmbus_reg2data_direct() argument 520 pmbus_reg2data_vid(struct pmbus_data *data, struct pmbus_sensor *sensor) pmbus_reg2data_vid() argument 552 pmbus_data2reg_linear(struct pmbus_data *data, struct pmbus_sensor *sensor, long val) pmbus_data2reg_linear() argument 621 pmbus_data2reg_direct(struct pmbus_data *data, struct pmbus_sensor *sensor, long val) pmbus_data2reg_direct() argument 655 pmbus_data2reg_vid(struct pmbus_data *data, struct pmbus_sensor *sensor, long val) pmbus_data2reg_vid() argument 663 pmbus_data2reg(struct pmbus_data *data, struct pmbus_sensor *sensor, long val) pmbus_data2reg() argument
|
H A D | pmbus.c | 31 * Find sensor groups and status registers on each page. 146 * the coefficients from the chip, one set per group of sensor pmbus_identify() 159 /* Try to find sensor groups */ pmbus_identify()
|
/linux-4.1.27/drivers/media/usb/gspca/stv06xx/ |
H A D | stv06xx_sensor.h | 35 #define IS_1020(sd) ((sd)->sensor == &stv06xx_sensor_hdcs1020) 44 /* Defines the name of a sensor */ 60 /* Probes if the sensor is connected */ 69 /* Reads a sensor register */ 73 /* Writes to a sensor register */ 77 /* Instructs the sensor to start streaming */ 80 /* Instructs the sensor to stop streaming */ 83 /* Instructs the sensor to dump all its contents */
|
H A D | stv06xx.c | 83 /* Wraps the normal write sensor bytes / words functions for writing a 87 if (sd->sensor->i2c_len == 2) { stv06xx_write_sensor() 130 buf[0x20] = sd->sensor->i2c_addr; stv06xx_write_sensor_bytes() 162 buf[0x20] = sd->sensor->i2c_addr; stv06xx_write_sensor_words() 182 err = stv06xx_write_bridge(sd, STV_I2C_FLUSH, sd->sensor->i2c_flush); stv06xx_read_sensor() 190 buf[0x20] = sd->sensor->i2c_addr; stv06xx_read_sensor() 205 0x04, 0xc0, 0x1410, 0, buf, sd->sensor->i2c_len, stv06xx_read_sensor() 207 if (sd->sensor->i2c_len == 2) stv06xx_read_sensor() 262 err = sd->sensor->init(sd); stv06xx_init() 264 if (dump_sensor && sd->sensor->dump) stv06xx_init() 265 sd->sensor->dump(sd); stv06xx_init() 278 return sd->sensor->init_controls(sd); stv06xx_init_controls() 301 /* Prepare the sensor for start */ stv06xx_start() 302 err = sd->sensor->start(sd); stv06xx_start() 326 cpu_to_le16(sd->sensor->max_packet_size[gspca_dev->curr_mode]); stv06xx_isoc_init() 339 min_packet_size = sd->sensor->min_packet_size[gspca_dev->curr_mode]; stv06xx_isoc_nego() 365 err = sd->sensor->stop(sd); stv06xx_stopN() 557 sd->sensor = &stv06xx_sensor_st6422; stv06xx_config() 558 if (!sd->sensor->probe(sd)) stv06xx_config() 561 sd->sensor = &stv06xx_sensor_vv6410; stv06xx_config() 562 if (!sd->sensor->probe(sd)) stv06xx_config() 565 sd->sensor = &stv06xx_sensor_hdcs1x00; stv06xx_config() 566 if (!sd->sensor->probe(sd)) stv06xx_config() 569 sd->sensor = &stv06xx_sensor_hdcs1020; stv06xx_config() 570 if (!sd->sensor->probe(sd)) stv06xx_config() 573 sd->sensor = &stv06xx_sensor_pb0100; stv06xx_config() 574 if (!sd->sensor->probe(sd)) stv06xx_config() 577 sd->sensor = NULL; stv06xx_config() 616 sd->sensor = NULL; sd_disconnect() 639 MODULE_PARM_DESC(dump_sensor, "Dumps all sensor registers at startup");
|
H A D | stv06xx.h | 89 /* A pointer to the currently connected sensor */ 90 const struct stv06xx_sensor *sensor; member in struct:sd 104 #define BRIDGE_ST6422 3 /* With integrated sensor */
|
H A D | stv06xx_hdcs.c | 74 /* visible area of the sensor array */ 372 u16 sensor; hdcs_probe_1x00() local 375 ret = stv06xx_read_sensor(sd, HDCS_IDENT, &sensor); hdcs_probe_1x00() 376 if (ret < 0 || sensor != 0x08) hdcs_probe_1x00() 379 pr_info("HDCS-1000/1100 sensor detected\n"); hdcs_probe_1x00() 429 u16 sensor; hdcs_probe_1020() local 432 ret = stv06xx_read_sensor(sd, HDCS_IDENT, &sensor); hdcs_probe_1020() 433 if (ret < 0 || sensor != 0x10) hdcs_probe_1020() 436 pr_info("HDCS-1020 sensor detected\n"); hdcs_probe_1020() 503 /* sensor soft reset */ hdcs_init() 506 /* Execute the sensor init */ hdcs_init() 537 pr_info("Dumping sensor registers:\n"); hdcs_dump()
|
H A D | stv06xx_pb0100.c | 32 * images after the sensor has been reset : 170 u16 sensor; pb0100_probe() local 173 err = stv06xx_read_sensor(sd, PB_IDENT, &sensor); pb0100_probe() 177 if ((sensor >> 8) != 0x64) pb0100_probe() 180 pr_info("Photobit pb0100 sensor detected\n"); pb0100_probe() 204 max_packet_size = sd->sensor->max_packet_size[sd->gspca_dev.curr_mode]; pb0100_start() 210 /* Setup sensor window */ pb0100_start() 268 /* Reset sensor */ pb0100_init() 313 /* Scan/timing for the sensor */ pb0100_init() 422 /* Number of pixels counted by the sensor when subsampling the pixels. pb0100_set_autogain_target()
|
H A D | stv06xx_st6422.h | 2 * Support for the sensor part which is integrated (I think) into the
|
/linux-4.1.27/include/linux/iio/common/ |
H A D | st_sensors.h | 108 * struct st_sensor_bdu - ST sensor device block data update 118 * struct st_sensor_data_ready_irq - ST sensor device data-ready interrupt 137 * struct st_sensor_transfer_buffer - ST sensor device I/O buffer 151 * struct st_sensor_transfer_function - ST sensor device I/O function 167 * struct st_sensor_settings - ST specific sensor settings 170 * @ch: IIO channels for the sensor. 172 * @pw: Power register of the sensor. 173 * @enable_axis: Enable one or more axis of the sensor. 176 * @drdy_irq: Data ready register of the sensor. 178 * @bootime: samples to discard when sensor passing from power-down to power-up. 196 * struct st_sensor_data - ST sensor device status 199 * @sensor_settings: Pointer to the specific sensor settings in use. 200 * @current_fullscale: Maximum range of measure by the sensor. 201 * @vdd: Pointer to sensor's Vdd power supply 202 * @vdd_io: Pointer to sensor's Vdd-IO power supply 203 * @enabled: Status of the sensor (false->off, true->on). 206 * @odr: Output data rate of the sensor [Hz].
|
H A D | ssp_sensors.h | 28 * enum ssp_sensor_type - SSP sensor type 59 * @process_data: Callback to feed sensor data. 60 * @type: Used sensor type.
|
/linux-4.1.27/drivers/iio/accel/ |
H A D | Makefile | 8 obj-$(CONFIG_HID_SENSOR_ACCEL_3D) += hid-sensor-accel-3d.o
|
/linux-4.1.27/drivers/iio/pressure/ |
H A D | Makefile | 7 obj-$(CONFIG_HID_SENSOR_PRESS) += hid-sensor-press.o
|
H A D | ms5611.h | 2 * MS5611 pressure and temperature sensor driver
|
H A D | t5403.c | 2 * t5403.c - Support for EPCOS T5403 pressure/temperature sensor 274 MODULE_DESCRIPTION("EPCOS T5403 pressure/temperature sensor driver");
|
H A D | ms5611_i2c.c | 2 * MS5611 pressure and temperature sensor driver (I2C bus)
|
H A D | ms5611_spi.c | 2 * MS5611 pressure and temperature sensor driver (SPI bus)
|
/linux-4.1.27/drivers/thermal/ti-soc-thermal/ |
H A D | ti-bandgap.h | 2 * OMAP4 Bandgap temperature sensor driver 68 * sensors, representing every sensor instance present in this bandgap. 173 * @min_freq: sensor minimum clock rate 174 * @max_freq: sensor maximum clock rate 175 * @max_temp: sensor maximum temperature 176 * @min_temp: sensor minimum temperature 182 * for a specific temperature sensor, like shutdown temperature, alert 202 * struct temp_sensor_regval - temperature sensor register values and priv data 203 * @bg_mode_ctrl: temp sensor control register value 227 * @regval: temperature sensor register values 228 * @fclock: pointer to functional clock of temperature sensor 229 * @div_clk: pointer to divider clock of temperature sensor fclk 236 * It holds most of the dynamic stuff. Configurations and sensor specific 253 * struct ti_temp_sensor - bandgap temperature sensor configuration data 254 * @ts_data: pointer to struct with thresholds, limits of temperature sensor 256 * @domain: the name of the domain where the sensor is located 257 * @slope: sensor gradient slope info for hotspot extrapolation equation 258 * @constant: sensor gradient const info for hotspot extrapolation equation 259 * @slope_pcb: sensor gradient slope info for hotspot extrapolation equation 261 * @constant_pcb: sensor gradient const info for hotspot extrapolation equation 263 * @register_cooling: function to describe how this sensor is going to be cooled 266 * Data structure to describe a temperature sensor handled by a bandgap device. 267 * It should provide configuration details on this sensor, such as how to 268 * access the registers affecting this sensor, shadow register buffer, how to 269 * assess the gradient from hotspot, how to cooldown the domain when sensor 351 * @sensor_count: count of temperature sensor within this bandgap device 353 * @expose_sensor: callback to export sensor to thermal API 354 * @remove_sensor: callback to destroy sensor from thermal API
|
H A D | dra752-thermal-data.c | 27 * DRA752 has five instances of thermal sensor: MPU, GPU, CORE, 33 * DRA752 CORE thermal sensor register offsets and bit-fields 69 * DRA752 IVA thermal sensor register offsets and bit-fields 105 * DRA752 MPU thermal sensor register offsets and bit-fields 141 * DRA752 DSPEVE thermal sensor register offsets and bit-fields 177 * DRA752 GPU thermal sensor register offsets and bit-fields 212 /* Thresholds and limits for DRA752 MPU temperature sensor */ 227 /* Thresholds and limits for DRA752 GPU temperature sensor */ 242 /* Thresholds and limits for DRA752 CORE temperature sensor */ 257 /* Thresholds and limits for DRA752 DSPEVE temperature sensor */ 272 /* Thresholds and limits for DRA752 IVA temperature sensor */
|
H A D | omap5-thermal-data.c | 24 * OMAP5430 has three instances of thermal sensor for MPU, GPU & CORE, 29 * OMAP5430 MPU thermal sensor register offset and bit-fields 75 * OMAP5430 GPU thermal sensor register offset and bit-fields 121 * OMAP5430 CORE thermal sensor register offset and bit-fields 166 /* Thresholds and limits for OMAP5430 MPU temperature sensor */ 181 /* Thresholds and limits for OMAP5430 GPU temperature sensor */ 196 /* Thresholds and limits for OMAP5430 CORE temperature sensor */
|
H A D | omap4-thermal-data.c | 24 * OMAP4430 has one instance of thermal sensor for MPU 41 /* Thresholds and limits for OMAP4430 MPU temperature sensor */ 96 * OMAP4460 has one instance of thermal sensor for MPU 134 /* Thresholds and limits for OMAP4460 MPU temperature sensor */
|
H A D | ti-bandgap.c | 2 * TI Bandgap temperature sensor driver 122 * ti_errata814_bandgap_read_temp() - helper function to read dra7 sensor temperature 126 * Function to read dra7 bandgap sensor temperature. This is done separately 153 * ti_bandgap_read_temp() - helper function to read sensor temperature 155 * @id: bandgap sensor id 157 * Function to concentrate the steps to read sensor temperature register. 248 "%s: IRQ from %s sensor: hotevent %d coldevent %d\n", ti_bandgap_talert_irq_handler() 267 * HAS(TSHUT). If any sensor fires the Tshut signal, we simply shutdown 396 * @id: bandgap sensor id 430 * @id: bandgap sensor id 535 * @id: bandgap sensor id 537 * Checks if the bandgap pointer is valid and if the sensor id is also 554 dev_err(bgp->dev, "%s: sensor id out of range (%d)\n", ti_bandgap_validate() 566 * @id: bandgap sensor id 623 * @id: bandgap sensor id 675 * ti_bandgap_read_thot() - reads sensor current thot 677 * @id: sensor id 688 * ti_bandgap_write_thot() - sets sensor current thot 690 * @id: sensor id 701 * ti_bandgap_read_tcold() - reads sensor current tcold 703 * @id: sensor id 714 * ti_bandgap_write_tcold() - sets the sensor tcold 716 * @id: sensor id 727 * ti_bandgap_read_counter() - read the sensor counter 729 * @id: sensor id 747 * ti_bandgap_read_counter_delay() - read the sensor counter delay 749 * @id: sensor id 789 * ti_bandgap_read_update_interval() - read the sensor update interval 791 * @id: sensor id 824 * @id: sensor id 866 * ti_bandgap_write_counter() - set the bandgap sensor counter 868 * @id: sensor id 883 * @id: sensor id 914 * @id: sensor id 946 * @id: sensor id 966 * @id: sensor id 968 * Return: data stored by set function with sensor id on success or NULL 984 * @id: sensor id which it is desired to read 1 temperature 1040 * ti_bandgap_get_trend() - To fetch the temperature trend of a sensor 1042 * @id: id of the individual sensor 1046 * Particular sensor. The function computes the difference in temperature 1452 /* First thing is to remove sensor interfaces */ ti_bandgap_remove() 1629 MODULE_DESCRIPTION("OMAP4+ bandgap temperature sensor driver");
|
H A D | dra752-bandgap.h | 214 /* sensor limits */ 228 /* sensor limits */ 242 /* sensor limits */ 256 /* sensor limits */ 270 /* sensor limits */
|
H A D | omap5xxx-bandgap.h | 162 /* sensor limits */ 176 /* sensor limits */ 190 /* sensor limits */
|
H A D | ti-thermal-common.c | 62 * ti_thermal_hotspot_temperature - returns sensor extrapolated temperature 63 * @t: omap sensor temperature 64 * @s: omap sensor slope value 65 * @c: omap sensor const value 399 if (of_find_property(np, "#thermal-sensor-cells", NULL)) ti_thermal_register_cpu_cooling()
|
H A D | omap4xxx-bandgap.h | 76 /* sensor limits */ 165 /* sensor limits */
|
H A D | ti-thermal.h | 44 /* PCB sensor calculation constants */
|
/linux-4.1.27/drivers/media/usb/gspca/gl860/ |
H A D | gl860.h | 35 #define _MI1320_ (((struct sd *) gspca_dev)->sensor == ID_MI1320) 36 #define _MI2020_ (((struct sd *) gspca_dev)->sensor == ID_MI2020) 37 #define _OV2640_ (((struct sd *) gspca_dev)->sensor == ID_OV2640) 38 #define _OV9655_ (((struct sd *) gspca_dev)->sensor == ID_OV9655) 75 u8 sensor; member in struct:sd
|
H A D | gl860.c | 54 static char sensor[7]; variable 55 module_param_string(sensor, sensor, sizeof(sensor), 0644); 56 MODULE_PARM_DESC(sensor, 57 " Driver sensor ('MI1320'/'MI2020'/'OV9655'/'OV2640')"); 342 sd->sensor = 0xff; sd_config() 343 if (strcmp(sensor, "MI1320") == 0) sd_config() 344 sd->sensor = ID_MI1320; sd_config() 345 else if (strcmp(sensor, "OV2640") == 0) sd_config() 346 sd->sensor = ID_OV2640; sd_config() 347 else if (strcmp(sensor, "OV9655") == 0) sd_config() 348 sd->sensor = ID_OV9655; sd_config() 349 else if (strcmp(sensor, "MI2020") == 0) sd_config() 350 sd->sensor = ID_MI2020; sd_config() 352 /* Get sensor and set the suitable init/start/../stop functions */ sd_config() 358 switch (sd->sensor) { sd_config() 479 /* Probe sensor orientation */ sd_callback() 643 sd->sensor = ID_MI1320; gl860_guess_sensor() 645 if (sd->sensor == 0xff) { gl860_guess_sensor() 664 PDEBUG(D_PROBE, "probing for sensor MI2020 or OVXXXX"); gl860_guess_sensor() 681 PDEBUG(D_PROBE, "probing for sensor OV2640 or OV9655"); gl860_guess_sensor() 700 sd->sensor = ID_OV2640; gl860_guess_sensor() 708 sd->sensor = ID_OV9655; gl860_guess_sensor() 723 sd->sensor = ID_MI2020; gl860_guess_sensor() 728 PDEBUG(D_PROBE, "05e3:f191 sensor MI1320 (1.3M)"); gl860_guess_sensor() 730 PDEBUG(D_PROBE, "05e3:0503 sensor MI2020 (2.0M)"); gl860_guess_sensor() 732 PDEBUG(D_PROBE, "05e3:0503 sensor OV9655 (1.3M)"); gl860_guess_sensor() 734 PDEBUG(D_PROBE, "05e3:0503 sensor OV2640 (2.0M)"); gl860_guess_sensor() 736 PDEBUG(D_PROBE, "***** Unknown sensor *****"); gl860_guess_sensor()
|
/linux-4.1.27/drivers/media/usb/gspca/ |
H A D | t613.c | 51 u8 sensor; member in struct:sd 93 /* sensor specific data */ 426 pr_err("Bad sensor reset %02x\n", byte); om6802_sensor_init() 526 all_gain_reg[7] = sensor_data[sd->sensor].reg80; setawb_n_RGB() 548 switch (sd->sensor) { setfreq() 582 const struct additional_sensor_data *sensor; sd_init() local 599 PDEBUG(D_PROBE, "sensor tas5130a"); sd_init() 600 sd->sensor = SENSOR_TAS5130A; sd_init() 603 PDEBUG(D_PROBE, "sensor lt168g"); sd_init() 604 sd->sensor = SENSOR_LT168G; sd_init() 607 PDEBUG(D_PROBE, "sensor 'other'"); sd_init() 608 sd->sensor = SENSOR_OTHER; sd_init() 611 PDEBUG(D_PROBE, "sensor om6802"); sd_init() 612 sd->sensor = SENSOR_OM6802; sd_init() 615 pr_err("unknown sensor %04x\n", sensor_id); sd_init() 619 if (sd->sensor == SENSOR_OM6802) { sd_init() 630 pr_err("Bad sensor reset %02x\n", test_byte); sd_init() 644 sensor = &sensor_data[sd->sensor]; sd_init() 645 reg_w_buf(gspca_dev, sensor->n3, sizeof sensor->n3); sd_init() 646 reg_w_buf(gspca_dev, sensor->n4, sensor->n4sz); sd_init() 648 if (sd->sensor == SENSOR_LT168G) { sd_init() 655 reg_w_ixbuf(gspca_dev, 0xd0, sensor->data1, sizeof sensor->data1); sd_init() 656 reg_w_ixbuf(gspca_dev, 0xc7, sensor->data2, sizeof sensor->data2); sd_init() 657 reg_w_ixbuf(gspca_dev, 0xe0, sensor->data3, sizeof sensor->data3); sd_init() 659 reg_w(gspca_dev, (sensor->reg80 << 8) + 0x80); sd_init() 660 reg_w(gspca_dev, (sensor->reg80 << 8) + 0x80); sd_init() 661 reg_w(gspca_dev, (sensor->reg8e << 8) + 0x8e); sd_init() 666 reg_w_buf(gspca_dev, sensor->data5, sizeof sensor->data5); sd_init() 667 reg_w_buf(gspca_dev, sensor->nset8, sizeof sensor->nset8); sd_init() 668 reg_w_buf(gspca_dev, sensor->stream, sizeof sensor->stream); sd_init() 670 if (sd->sensor == SENSOR_LT168G) { sd_init() 677 reg_w_ixbuf(gspca_dev, 0xd0, sensor->data1, sizeof sensor->data1); sd_init() 678 reg_w_ixbuf(gspca_dev, 0xc7, sensor->data2, sizeof sensor->data2); sd_init() 679 reg_w_ixbuf(gspca_dev, 0xe0, sensor->data3, sizeof sensor->data3); sd_init() 753 const struct additional_sensor_data *sensor; sd_start() local 778 switch (sd->sensor) { sd_start() 798 sensor = &sensor_data[sd->sensor]; sd_start() 805 reg_w_buf(gspca_dev, sensor->stream, sizeof sensor->stream); sd_start() 806 reg_w_buf(gspca_dev, sensor->stream, sizeof sensor->stream); sd_start() 808 if (sd->sensor == SENSOR_OM6802) sd_start() 818 reg_w_buf(gspca_dev, sensor_data[sd->sensor].stream, sd_stopN() 819 sizeof sensor_data[sd->sensor].stream); sd_stopN() 820 reg_w_buf(gspca_dev, sensor_data[sd->sensor].stream, sd_stopN() 821 sizeof sensor_data[sd->sensor].stream); sd_stopN() 822 if (sd->sensor == SENSOR_OM6802) { sd_stopN() 977 if (sd->sensor == SENSOR_TAS5130A) sd_init_controls()
|
H A D | sq930x.c | 46 u8 sensor; member in struct:sd 250 {0x01, 0x0004}, /* select sensor core registers */ 292 /* start parameters indexed by [sensor][mode] */ 492 const struct sensor_s *sensor; i2c_write() local 500 sensor = &sensor_tb[sd->sensor]; i2c_write() 502 val = (sensor->i2c_addr << 8) | SQ930_CTRL_I2C_IO; i2c_write() 506 *buf++ = sensor->i2c_dum; i2c_write() 513 *buf++ = sensor->i2c_dum; i2c_write() 637 const struct sensor_s *sensor; cmos_probe() local 647 sensor = &sensor_tb[probe_order[i]]; cmos_probe() 648 ucbus_write(&sd->gspca_dev, sensor->cmd, sensor->cmd_len, 8); cmos_probe() 649 gpio_init(sd, sensor->gpio); cmos_probe() 651 reg_r(gspca_dev, (sensor->i2c_addr << 8) | 0x001c, 1); cmos_probe() 657 pr_err("Unknown sensor\n"); cmos_probe() 661 sd->sensor = probe_order[i]; cmos_probe() 662 switch (sd->sensor) { cmos_probe() 666 sensor_tb[sd->sensor].name); cmos_probe() 709 switch (sd->sensor) { global_init() 715 gpio_init(sd, sensor_tb[sd->sensor].gpio); global_init() 727 gpio_init(sd, sensor_tb[sd->sensor].gpio); global_init() 735 gpio_init(sd, sensor_tb[sd->sensor].gpio); global_init() 743 gpio_init(sd, sensor_tb[sd->sensor].gpio); global_init() 762 const struct sensor_s *sensor; setexposure() local 770 switch (sd->sensor) { setexposure() 773 min_frclk = sd->sensor == SENSOR_ICX098BQ ? 0x210 : 0x26f; setexposure() 791 sensor = &sensor_tb[sd->sensor]; setexposure() 792 buf[i++] = sensor->i2c_addr; /* i2c_slave_addr */ setexposure() 796 buf[i++] = sensor->i2c_dum; setexposure() 800 buf[i++] = sensor->i2c_dum; setexposure() 819 sd->sensor = id->driver_info >> 8; sd_config() 838 if (sd->sensor != SENSOR_LZ24BP) sd_init() 851 * 03 00 12 93 0b f6 cf 00 icam tracer - sensor icx098bq sd_init() 861 * 6: c8 / c9 / ca / cf = mode webcam?, sensor? webcam? sd_init() 868 if (sd->sensor == SENSOR_MI0360) { sd_init() 870 /* no sensor probe for icam tracer */ sd_init() 872 sd->sensor = SENSOR_ICX098BQ; sd_init() 877 PDEBUG(D_PROBE, "Sensor %s", sensor_tb[sd->sensor].name); sd_init() 891 cap = &capconfig[sd->sensor][mode]; send_start() 924 switch (sd->sensor) { sd_start() 1018 if (sd->sensor == SENSOR_MT9V111) sd_start() 1030 if (sd->sensor == SENSOR_MT9V111) sd_stopN() 1128 #define ST(sensor, type) \ 1129 .driver_info = (SENSOR_ ## sensor << 8) \
|
H A D | sn9c20x.c | 111 u8 sensor; member in struct:sd 639 /* mt9m001 sensor uses a different gain formula then other micron sensors */ 1092 pr_err("sensor id for ov9650 doesn't match (0x%04x)\n", id); ov9650_init_sensor() 1097 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov9650_init_sensor() 1101 pr_err("OV9650 sensor initialization failed\n"); ov9650_init_sensor() 1110 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov9655_init_sensor() 1114 pr_err("OV9655 sensor initialization failed\n"); ov9655_init_sensor() 1124 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ soi968_init_sensor() 1128 pr_err("SOI968 sensor initialization failed\n"); soi968_init_sensor() 1138 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov7660_init_sensor() 1142 pr_err("OV7660 sensor initialization failed\n"); ov7660_init_sensor() 1151 i2c_w1(gspca_dev, 0x12, 0x80); /* sensor reset */ ov7670_init_sensor() 1155 pr_err("OV7670 sensor initialization failed\n"); ov7670_init_sensor() 1172 pr_err("MT9V011 sensor initialization failed\n"); mt9v_init_sensor() 1177 sd->sensor = SENSOR_MT9V011; mt9v_init_sensor() 1178 pr_info("MT9V011 sensor detected\n"); mt9v_init_sensor() 1190 pr_err("MT9V111 sensor initialization failed\n"); mt9v_init_sensor() 1195 sd->sensor = SENSOR_MT9V111; mt9v_init_sensor() 1196 pr_info("MT9V111 sensor detected\n"); mt9v_init_sensor() 1213 pr_err("MT9V112 sensor initialization failed\n"); mt9v_init_sensor() 1218 sd->sensor = SENSOR_MT9V112; mt9v_init_sensor() 1219 pr_info("MT9V112 sensor detected\n"); mt9v_init_sensor() 1232 pr_err("MT9M112 sensor initialization failed\n"); mt9m112_init_sensor() 1244 pr_err("MT9M111 sensor initialization failed\n"); mt9m111_init_sensor() 1259 /* must be 0x8411 or 0x8421 for colour sensor and 8431 for bw */ mt9m001_init_sensor() 1263 pr_info("MT9M001 color sensor detected\n"); mt9m001_init_sensor() 1266 pr_info("MT9M001 mono sensor detected\n"); mt9m001_init_sensor() 1276 pr_err("MT9M001 sensor initialization failed\n"); mt9m001_init_sensor() 1376 switch (sd->sensor) { set_hvflip() 1446 switch (sd->sensor) { set_exposure() 1501 switch (sd->sensor) { set_gain() 1569 if (sd->sensor >= SENSOR_MT9V011 && sd_dbg_g_register() 1570 sd->sensor <= SENSOR_MT9M112) { sd_dbg_g_register() 1593 if (sd->sensor >= SENSOR_MT9V011 && sd_dbg_s_register() 1594 sd->sensor <= SENSOR_MT9M112) { sd_dbg_s_register() 1610 strlcpy(chip->name, "sensor", sizeof(chip->name)); sd_chip_info() 1624 sd->sensor = id->driver_info >> 8; sd_config() 1629 switch (sd->sensor) { sd_config() 1697 if (sd->sensor == SENSOR_SOI968) sd_s_ctrl() 1738 if (sd->sensor != SENSOR_OV9655 && sd->sensor != SENSOR_SOI968 && sd_init_controls() 1739 sd->sensor != SENSOR_OV7670 && sd->sensor != SENSOR_MT9M001 && sd_init_controls() 1740 sd->sensor != SENSOR_MT9VPRB) { sd_init_controls() 1747 if (sd->sensor != SENSOR_SOI968 && sd->sensor != SENSOR_MT9VPRB && sd_init_controls() 1748 sd->sensor != SENSOR_MT9M112 && sd->sensor != SENSOR_MT9M111 && sd_init_controls() 1749 sd->sensor != SENSOR_MT9V111) sd_init_controls() 1753 if (sd->sensor != SENSOR_MT9VPRB && sd->sensor != SENSOR_MT9M112 && sd_init_controls() 1754 sd->sensor != SENSOR_MT9M111 && sd->sensor != SENSOR_MT9V111) { sd_init_controls() 1773 if (sd->sensor == SENSOR_SOI968) sd_init_controls() 1774 /* this sensor doesn't have the exposure control and sd_init_controls() 1814 switch (sd->sensor) { sd_init() 1819 pr_info("OV9650 sensor detected\n"); sd_init() 1825 pr_info("OV9655 sensor detected\n"); sd_init() 1831 pr_info("SOI968 sensor detected\n"); sd_init() 1837 pr_info("OV7660 sensor detected\n"); sd_init() 1843 pr_info("OV7670 sensor detected\n"); sd_init() 1849 pr_info("MT9VPRB sensor detected\n"); sd_init() 1855 pr_info("MT9M111 sensor detected\n"); sd_init() 1861 pr_info("MT9M112 sensor detected\n"); sd_init() 1872 pr_info("HV7131R sensor detected\n"); sd_init() 1875 pr_err("Unsupported sensor\n"); sd_init() 1886 switch (sd->sensor) { configure_sensor_output() 2152 if (sd->sensor == SENSOR_SOI968) sd_dqcallback() 2330 #define SN9C20X(sensor, i2c_addr, flags) \ 2332 | (SENSOR_ ## sensor << 8) \
|
H A D | sonixb.c | 42 0x19 high-nibble is sensor clock divider, changes exposure on sensors which 80 __u8 sensor; /* Type of image sensor chip */ member in struct:sd 118 #define SENS(bridge, sensor, _flags, _sensor_addr) \ 121 .sensor_init = sensor, \ 122 .sensor_init_size = sizeof(sensor), \ 225 /* Reset sensor */ 309 0x13 Write 1 to commit settings to sensor 545 switch (sd->sensor) { setbrightness() 552 i2cOV[1] = sensor_data[sd->sensor].sensor_addr; setbrightness() 565 if (sd->sensor == SENSOR_PAS106) { setbrightness() 592 switch (sd->sensor) { setgain() 637 if (sd->sensor == SENSOR_OV7630 && gain >= 32) setgain() 640 i2c[1] = sensor_data[sd->sensor].sensor_addr; setgain() 655 if (sd->sensor == SENSOR_PAS106) { setgain() 690 switch (sd->sensor) { setexposure() 738 if (sd->sensor == SENSOR_OV6650) { setexposure() 772 i2c[1] = sensor_data[sd->sensor].sensor_addr; setexposure() 861 if (sd->sensor == SENSOR_OV6650 || sd->sensor == SENSOR_OV7630) { setfreq() 874 i2c[3] = (sd->sensor == SENSOR_OV6650) setfreq() 878 i2c[1] = sensor_data[sd->sensor].sensor_addr; setfreq() 899 if (sensor_data[sd->sensor].flags & F_SIF) { do_autogain() 935 sd->sensor = id->driver_info >> 8; sd_config() 939 if (!(sensor_data[sd->sensor].flags & F_SIF)) { sd_config() 1014 if (sd->sensor == SENSOR_OV6650 || sd->sensor == SENSOR_OV7630 || sd_init_controls() 1015 sd->sensor == SENSOR_PAS106 || sd->sensor == SENSOR_PAS202) sd_init_controls() 1019 /* Gain range is sensor dependent */ sd_init_controls() 1020 switch (sd->sensor) { sd_init_controls() 1051 /* Exposure range is sensor dependent, and not all have exposure */ sd_init_controls() 1052 switch (sd->sensor) { sd_init_controls() 1078 if (sd->sensor == SENSOR_OV6650 || sd->sensor == SENSOR_OV7630) sd_init_controls() 1105 memcpy(®s[0x01], sensor_data[sd->sensor].bridge_init, 0x19); sd_start() 1120 if (sensor_data[sd->sensor].flags & F_SIF) { sd_start() 1142 switch (sd->sensor) { sd_start() 1171 /* Vga mode emulation on SIF sensor? */ sd_start() 1187 /* Init the sensor */ sd_start() 1188 i2c_w_vector(gspca_dev, sensor_data[sd->sensor].sensor_init, sd_start() 1189 sensor_data[sd->sensor].sensor_init_size); sd_start() 1191 /* Mode / bridge specific sensor setup */ sd_start() 1192 switch (sd->sensor) { sd_start() 1421 #define SB(sensor, bridge) \ 1422 .driver_info = (SENSOR_ ## sensor << 8) | BRIDGE_ ## bridge
|
H A D | ov534.c | 42 #define OV534_REG_ADDRESS 0xf1 /* sensor address */ 86 u8 sensor; member in struct:sd 739 /* output a sensor sequence (reg - val) */ sccb_w_array() 787 if (sd->sensor != SENSOR_OV772x) set_frame_rate() 813 if (sd->sensor == SENSOR_OV767x) { sethue() 848 if (sd->sensor == SENSOR_OV767x) { setsaturation() 872 if (sd->sensor == SENSOR_OV767x) { setbrightness() 885 if (sd->sensor == SENSOR_OV767x) setcontrast() 923 if (sd->sensor == SENSOR_OV767x) { setexposure() 944 if (sd->sensor == SENSOR_OV767x) { getexposure() 976 if (sd->sensor == SENSOR_OV772x) setawb() 982 if (sd->sensor == SENSOR_OV772x) setawb() 993 data = sd->sensor == SENSOR_OV767x ? setaec() 1019 if (sd->sensor == SENSOR_OV767x) { sethvflip() 1043 if (sd->sensor == SENSOR_OV767x) { setlightfreq() 1168 if (sd->sensor == SENSOR_OV767x) { sd_init_controls() 1200 if (sd->sensor == SENSOR_OV772x) sd_init_controls() 1213 if (sd->sensor == SENSOR_OV772x) { sd_init_controls() 1231 if (sd->sensor == SENSOR_OV772x) sd_init_controls() 1249 if (sd->sensor == SENSOR_OV772x) sd_init_controls() 1277 /* initialize the sensor address */ sd_init() 1280 /* reset sensor */ sd_init() 1284 /* probe the sensor */ sd_init() 1292 sd->sensor = SENSOR_OV767x; sd_init() 1296 sd->sensor = SENSOR_OV772x; sd_init() 1304 reg_w_array(gspca_dev, bridge_init[sd->sensor].val, sd_init() 1305 bridge_init[sd->sensor].len); sd_init() 1307 sccb_w_array(gspca_dev, sensor_init[sd->sensor].val, sd_init() 1308 sensor_init[sd->sensor].len); sd_init() 1342 if (sd->sensor == SENSOR_OV767x) sd_start() 1347 reg_w_array(gspca_dev, bridge_start[sd->sensor][mode].val, sd_start() 1348 bridge_start[sd->sensor][mode].len); sd_start() 1349 sccb_w_array(gspca_dev, sensor_start[sd->sensor][mode].val, sd_start() 1350 sensor_start[sd->sensor][mode].len); sd_start()
|
H A D | ov519.c | 60 * are getting "Failed to read sensor ID..." */ 98 /* Determined by sensor type */ 111 s8 sensor; /* Type of image sensor chip (SEN_*) */ member in struct:sd 141 really should move the sensor drivers to v4l2 sub drivers. */ 664 * (0x12) to change the sensor mode, registers related to the 665 * sensor’s cropping window will be reset back to their default 668 * "wait 4096 external clock ... to make sure the sensor is 1187 * = 0 (0x00) .0...... "Master mode, sensor 2305 * always succeeds regardless of whether the sensor is present and working. 2334 * always succeeds regardless of whether the sensor is present and working. 2428 /* Up on sensor reset empty the register cache */ i2c_w() 2559 /* This does an initial reset of an OmniVision sensor and ensures that I2C 2569 /* Reset the sensor */ init_ov_sensor() 2582 /* Reset the sensor */ init_ov_sensor() 2638 * OV511 and sensor configuration 2655 /* Detect sensor (sub)type */ ov_hires_configure() 2664 sd->sensor = SEN_OV2610; ov_hires_configure() 2668 sd->sensor = SEN_OV2610AE; ov_hires_configure() 2672 sd->sensor = SEN_OV9600; ov_hires_configure() 2679 sd->sensor = SEN_OV3610; ov_hires_configure() 2684 PERR("Error unknown sensor type: %02x%02x\n", high, low); ov_hires_configure() 2687 /* This initializes the OV8110, OV8610 sensor. The OV8110 uses 2697 /* Detect sensor (sub)type */ ov8xx0_configure() 2700 PERR("Error detecting sensor type"); ov8xx0_configure() 2704 sd->sensor = SEN_OV8610; ov8xx0_configure() 2706 PERR("Unknown image sensor version: %d\n", rc & 3); ov8xx0_configure() 2709 /* This initializes the OV7610, OV7620, or OV76BE sensor. The OV76BE uses 2719 /* Detect sensor (sub)type */ ov7xx0_configure() 2725 PERR("Error detecting sensor type\n"); ov7xx0_configure() 2735 sd->sensor = SEN_OV7670; ov7xx0_configure() 2738 sd->sensor = SEN_OV7610; ov7xx0_configure() 2744 sd->sensor = SEN_OV7620AE; ov7xx0_configure() 2747 sd->sensor = SEN_OV76BE; ov7xx0_configure() 2769 sd->sensor = SEN_OV7640; /* FIXME */ ov7xx0_configure() 2773 sd->sensor = SEN_OV7640; /* FIXME */ ov7xx0_configure() 2777 sd->sensor = SEN_OV7648; ov7xx0_configure() 2781 sd->sensor = SEN_OV7660; ov7xx0_configure() 2784 PERR("Unknown sensor: 0x76%02x\n", low); ov7xx0_configure() 2789 sd->sensor = SEN_OV7620; ov7xx0_configure() 2792 PERR("Unknown image sensor version: %d\n", rc & 3); ov7xx0_configure() 2796 /* This initializes the OV6620, OV6630, OV6630AE, or OV6630AF sensor. */ ov6xx0_configure() 2804 /* Detect sensor (sub)type */ ov6xx0_configure() 2807 PERR("Error detecting sensor type\n"); ov6xx0_configure() 2816 sd->sensor = SEN_OV6630; ov6xx0_configure() 2820 sd->sensor = SEN_OV6620; ov6xx0_configure() 2824 sd->sensor = SEN_OV6630; ov6xx0_configure() 2828 sd->sensor = SEN_OV66308AF; ov6xx0_configure() 2832 sd->sensor = SEN_OV6630; ov6xx0_configure() 2836 PERR("FATAL: Unknown sensor version: 0x%02x\n", rc); ov6xx0_configure() 2840 /* Set sensor-specific vars */ ov6xx0_configure() 2969 /* This initializes the OV511/OV511+ and the sensor */ ov511_configure() 3035 /* This initializes the OV518/OV518+ and the sensor */ ov518_configure() 3116 /* Set LED pin to output mode. Bit 4 must be cleared or sensor ov519_configure() 3191 * - reg = 0: bridge a4, 1: bridge 23, 2: sensor 11 (clock) ov519_set_fr() 3225 if (sd->sensor == SEN_OV7660) ov519_set_fr() 3306 /* The OV519 must be more aggressive about sensor detection since sd_init() 3307 * I2C write will never fail if the sensor is not present. We have sd_init() 3308 * to try to initialize the sensor to detect its presence */ sd_init() 3309 sd->sensor = -1; sd_init() 3327 PERR("Can't determine sensor slave IDs\n"); sd_init() 3331 if (sd->sensor < 0) sd_init() 3358 switch (sd->sensor) { sd_init() 3384 /* w9968cf needs initialisation once the sensor is known */ sd_init() 3389 /* initialize the sensor */ sd_init() 3390 switch (sd->sensor) { sd_init() 3482 * Do not put any sensor-specific code in here (including I2C I/O functions) 3531 switch (sd->sensor) { ov511_mode_init_regs() 3608 * Do not put any sensor-specific code in here (including I2C I/O functions) 3664 sd->sensor == SEN_OV7620AE) ov518_mode_init_regs() 3676 switch (sd->sensor) { ov518_mode_init_regs() 3749 * Do not put any sensor-specific code in here (including I2C I/O functions) 3800 switch (sd->sensor) { ov519_mode_init_regs() 3803 if (sd->sensor == SEN_OV7640 || ov519_mode_init_regs() 3804 sd->sensor == SEN_OV7648) { ov519_mode_init_regs() 3819 if (sd->sensor == SEN_OV7670 && ov519_mode_init_regs() 3822 else if (sd->sensor == SEN_OV7648 && ov519_mode_init_regs() 3840 switch (sd->sensor) { ov519_mode_init_regs() 3920 /******** Mode (VGA/QVGA) and sensor specific regs ********/ mode_init_ov_sensor_regs() 3921 switch (sd->sensor) { mode_init_ov_sensor_regs() 4002 if (sd->sensor == SEN_OV76BE) mode_init_ov_sensor_regs() 4124 switch (sd->sensor) { set_ov_sensor_window() 4142 /* The different sensor ICs handle setting up of window differently. set_ov_sensor_window() 4144 switch (sd->sensor) { set_ov_sensor_window() 4164 if (sd->sensor == SEN_OV66308AF && qvga) set_ov_sensor_window() 4190 switch (sd->sensor) { set_ov_sensor_window() 4474 the sensor and bridge are still syncing, so drop it. */ ovfx2_pkt_scan() 4536 switch (sd->sensor) { setbrightness() 4625 switch (sd->sensor) { setcontrast() 4688 switch (sd->sensor) { setcolors() 4730 if (sd->sensor == SEN_OV7660 setfreq_i() 4731 || sd->sensor == SEN_OV7670) { setfreq_i() 4763 if (sd->sensor == SEN_OV6620 || setfreq_i() 4764 sd->sensor == SEN_OV6630 || setfreq_i() 4765 sd->sensor == SEN_OV66308AF) setfreq_i() 4772 if (sd->sensor == SEN_OV6620 || setfreq_i() 4773 sd->sensor == SEN_OV6630 || setfreq_i() 4774 sd->sensor == SEN_OV66308AF) { setfreq_i() 4898 if (valid_controls[sd->sensor].has_brightness) sd_init_controls() 4901 sd->sensor == SEN_OV7660 ? 6 : 255, 1, sd_init_controls() 4902 sd->sensor == SEN_OV7660 ? 3 : 127); sd_init_controls() 4903 if (valid_controls[sd->sensor].has_contrast) { sd_init_controls() 4904 if (sd->sensor == SEN_OV7660) sd_init_controls() 4910 (sd->sensor == SEN_OV6630 || sd_init_controls() 4911 sd->sensor == SEN_OV66308AF) ? 200 : 127); sd_init_controls() 4913 if (valid_controls[sd->sensor].has_sat) sd_init_controls() 4916 sd->sensor == SEN_OV7660 ? 4 : 255, 1, sd_init_controls() 4917 sd->sensor == SEN_OV7660 ? 2 : 127); sd_init_controls() 4918 if (valid_controls[sd->sensor].has_exposure) sd_init_controls() 4921 if (valid_controls[sd->sensor].has_hvflip) { sd_init_controls() 4927 if (valid_controls[sd->sensor].has_autobright) sd_init_controls() 4930 if (valid_controls[sd->sensor].has_autogain) sd_init_controls() 4933 if (valid_controls[sd->sensor].has_freq) { sd_init_controls() 4934 if (sd->sensor == SEN_OV7670) sd_init_controls()
|
H A D | stk1135.c | 213 /* configure MT9M112 sensor */ stk1135_configure_mt9m112() 349 /* enable CLKOUT for sensor */ stk1135_configure_clock() 365 /* wait a while for sensor to catch up */ stk1135_configure_clock() 377 /* enable sensor standby and diasble chip enable */ stk1135_camera_disable() 386 /* disable CLKOUT for sensor */ stk1135_camera_disable() 389 /* disable sensor (GPIO5) and enable GPIO0,3,6 (?) - sensor standby? */ stk1135_camera_disable() 402 /* enable sensor (GPIO5) */ sd_init() 406 /* enable interrupts from GPIO8 (flip sensor) and GPIO9 (???) */ sd_init() 416 /* set sensor address */ sd_init() 423 /* read sensor ID */ sd_init() 434 pr_info("Detected sensor type %s (0x%x)\n", sensor_name, sensor_id); sd_init() 447 /* enable sensor (GPIO5) */ sd_start() 510 /* GPIO 8 is flip sensor (1 = normal position, 0 = flipped to back) */ sd_pkt_scan() 663 {USB_DEVICE(0x174f, 0x6a31)}, /* ASUS laptop, MT9M112 sensor */
|
H A D | sonixj.c | 82 u8 sensor; /* Type of image sensor chip */ member in struct:sd 113 #define S_PWR_DN 0x01 /* sensor power down */ 120 #define MCK_SIZE_MASK 0x1f /* sensor master clock */ 121 #define SEN_CLK_EN 0x20 /* enable sensor clock */ 339 /* gamma for sensor ADCM1700 */ 349 /* gamma for sensor GC0307 */ 354 /* gamma for sensor SP80708 */ 488 /* set sensor clock */ 532 {0xb1, 0x5d, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor clck ?2 */ 542 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */ 598 {0xb1, 0x5d, 0x07, 0x00, 0x02, 0x00, 0x00, 0x10}, /* sensor on */ 631 {0xb1, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x10}, /* sensor select */ 899 /* the sensor registers are described in m5602/m5602_po1030.h */ 900 {0xa1, 0x6e, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x10}, /* sensor reset */ 1244 switch (sd->sensor) { i2c_w1() 1301 /* sensor read 'len' (1..5) bytes in gspca_dev->usb_buf */ i2c_r() 1307 switch (sd->sensor) { i2c_r() 1345 /* check the ID of the hv7131 sensor */ 1346 /* this sequence is needed because it activates the sensor */ hv7131r_probe() 1349 i2c_w1(gspca_dev, 0x02, 0); /* sensor wakeup */ hv7131r_probe() 1353 i2c_r(gspca_dev, 0, 5); /* read sensor id */ hv7131r_probe() 1405 sd->sensor = SENSOR_MI0360B; mi0360_probe() 1409 sd->sensor = SENSOR_MT9V111; mi0360_probe() 1415 PDEBUG(D_PROBE, "Unknown sensor %04x - forced to mi0360", val); mi0360_probe() 1436 sd->sensor = SENSOR_SOI768; ov7630_probe() 1476 sd->sensor = SENSOR_PO1030; ov7648_probe() 1479 pr_err("Unknown sensor %04x\n", val); ov7648_probe() 1482 /* 0c45:6142 sensor may be po2030n, gc0305 or gc0307 */ po2030n_probe() 1499 sd->sensor = SENSOR_GC0307; po2030n_probe() 1515 /* sd->sensor = SENSOR_PO2030N; */ po2030n_probe() 1517 pr_err("Unknown sensor ID %04x\n", val); po2030n_probe() 1529 sd->sensor = id->driver_info >> 8; sd_config() 1533 if (sd->sensor == SENSOR_ADCM1700) { sd_config() 1582 switch (sd->sensor) { sd_init() 1606 /* Note we do not disable the sensor clock here (power saving mode), sd_init() 1611 sn9c1xx = sn_tb[sd->sensor]; sd_init() 1648 if (sd->sensor == SENSOR_OM6802) sd_init_controls() 1659 if (sd->sensor == SENSOR_PO2030N) { sd_init_controls() 1668 if (sd->sensor != SENSOR_ADCM1700 && sd->sensor != SENSOR_OV7660 && sd_init_controls() 1669 sd->sensor != SENSOR_PO1030 && sd->sensor != SENSOR_SOI768 && sd_init_controls() 1670 sd->sensor != SENSOR_SP80708) sd_init_controls() 1674 if (sd->sensor == SENSOR_HV7131R || sd->sensor == SENSOR_OV7630 || sd_init_controls() 1675 sd->sensor == SENSOR_OV7648 || sd->sensor == SENSOR_PO2030N) sd_init_controls() 1679 if (sd->sensor == SENSOR_OV7630 || sd->sensor == SENSOR_OV7648 || sd_init_controls() 1680 sd->sensor == SENSOR_OV7660) sd_init_controls() 1692 if (sd->sensor == SENSOR_PO2030N) { sd_init_controls() 1705 switch (sd->sensor) { expo_adjust() 1732 static const u8 doit[] = /* update sensor */ expo_adjust() 1734 static const u8 sensorgo[] = /* sensor on */ expo_adjust() 1812 switch (sd->sensor) { setbrightness() 1884 if (sd->sensor == SENSOR_MI0360B) setcolors() 1900 if (sd->sensor == SENSOR_PO2030N) { setredblue() 1926 switch (sd->sensor) { setgamma() 1957 if (sd->sensor == SENSOR_PO2030N) { setexposure() 1974 switch (sd->sensor) { setautogain() 1979 if (sd->sensor == SENSOR_OV7630) setautogain() 1999 if (sd->sensor == SENSOR_PO2030N) { setgain() 2013 switch (sd->sensor) { sethvflip() 2062 switch (sd->sensor) { setillum() 2081 if (sd->sensor == SENSOR_OV7660) { setfreq() 2102 switch (sd->sensor) { setfreq() 2212 sn9c1xx = sn_tb[sd->sensor]; sd_start() 2214 /* sensor clock already enabled in sd_init */ sd_start() 2229 switch (sd->sensor) { sd_start() 2249 switch (sd->sensor) { sd_start() 2269 reg01 &= ~S_PWR_DN; /* sensor power on */ sd_start() 2274 switch (sd->sensor) { sd_start() 2293 /* initialize the sensor */ sd_start() 2294 i2c_w_seq(gspca_dev, sensor_init[sd->sensor]); sd_start() 2301 if (sd->sensor == SENSOR_ADCM1700) { sd_start() 2310 if (sd->sensor == SENSOR_ADCM1700) { sd_start() 2318 switch (sd->sensor) { sd_start() 2338 switch (sd->sensor) { sd_start() 2373 switch (sd->sensor) { sd_start() 2436 /* more sensor initialization - param1 */ sd_start() 2443 switch (sd->sensor) { sd_start() 2456 switch (sd->sensor) { sd_start() 2509 switch (sd->sensor) { sd_stopN() 2555 reg01 |= S_PWR_DN; /* sensor power down */ sd_stopN() 2562 /* Don't disable sensor clock as that disables the button on the cam */ sd_stopN() 2598 if (sd->sensor == SENSOR_PO2030N) { do_autogain() 2606 switch (sd->sensor) { do_autogain() 2901 #define BS(bridge, sensor) \ 2903 | (SENSOR_ ## sensor << 8) 2904 #define BSF(bridge, sensor, flags) \ 2906 | (SENSOR_ ## sensor << 8) \
|
H A D | etoms.c | 37 char sensor; member in struct:sd 227 /* sensor base for the pas106 */ i2c_w() 243 /* sensor base for the pas106 */ i2c_r() 367 /* set the sensor */ Et_init2() 419 if (sd->sensor == SENSOR_PAS106) { setcolors() 431 if (sd->sensor == SENSOR_PAS106) { getcolors() 511 /* set the sensor */ Et_init1() 557 sd->sensor = id->driver_info; sd_config() 558 if (sd->sensor == SENSOR_PAS106) { sd_config() 574 if (sd->sensor == SENSOR_PAS106) sd_init() 588 if (sd->sensor == SENSOR_PAS106) sd_start() 609 if (sd->sensor == SENSOR_PAS106) { Et_getgainG() 621 if (sd->sensor == SENSOR_PAS106) { Et_setgainG() 742 if (sd->sensor == SENSOR_PAS106) sd_init_controls()
|
H A D | ov534_9.c | 33 #define OV534_REG_ADDRESS 0xf1 /* sensor address */ 56 u8 sensor; member in struct:sd 1224 /* output a sensor sequence (reg - val) */ sccb_w_array() 1272 if (sd->sensor == SENSOR_OV562x) { setbrightness() 1418 /* initialize the sensor address */ sd_init() 1421 /* reset sensor */ sd_init() 1425 /* probe the sensor */ sd_init() 1434 sd->sensor = SENSOR_OV965x; sd_init() 1455 sd->sensor = SENSOR_OV971x; sd_init() 1484 sd->sensor = SENSOR_OV562x; sd_init() 1494 sd->sensor = SENSOR_OV361x; sd_init() 1501 pr_err("Unknown sensor %04x", sensor_id); sd_init() 1559 if (sd->sensor == SENSOR_OV971x) sd_start() 1561 if (sd->sensor == SENSOR_OV562x) sd_start() 1563 if (sd->sensor == SENSOR_OV361x) sd_start() 1618 if (((struct sd *)gspca_dev)->sensor == SENSOR_OV361x) { sd_stopN() 1756 if (sd->sensor == SENSOR_OV971x) sd_init_controls() 1758 if (sd->sensor == SENSOR_OV361x) sd_init_controls() 1762 if (sd->sensor == SENSOR_OV562x) { sd_init_controls()
|
H A D | zc3xx.c | 61 u8 sensor; /* Type of image sensor chip */ member in struct:sd 1454 {0xaa, 0x0f, 0x0018}, /* set sensor gain */ 3597 /* Window inside sensor array */ 3603 /* Init the sensor */ 3675 /* sensor on */ 3713 /* Window inside sensor array */ 3719 /* Init the sensor */ 3795 /* sensor on */ 4402 {0xaa, 0x01, 0x0004}, /* select sensor core registers */ 5705 matrix = matrix_tb[sd->sensor]; setmatrix() 5806 /* Matches the sensor's internal frame rate to the lighting frequency. 5900 zc3_freq = freq_tb[sd->sensor][i]; setlightfreq() 5904 switch (sd->sensor) { setlightfreq() 5999 static void send_unknown(struct gspca_dev *gspca_dev, int sensor) send_unknown() argument 6002 switch (sensor) { send_unknown() 6024 if (sensor == SENSOR_PAS202B) send_unknown() 6031 static void start_2wr_probe(struct gspca_dev *gspca_dev, int sensor) start_2wr_probe() argument 6034 reg_w(gspca_dev, sensor, 0x0010); start_2wr_probe() 6135 i2c_write(gspca_dev, 0x12, 0x80, 0x00); /* sensor reset */ vga_2wr_probe() 6265 PDEBUG(D_PROBE, "sensor PO2030 rev 0x%02x", retbyte); vga_3wr_probe() 6290 int sensor; zcxx_probeSensor() local 6292 switch (sd->sensor) { zcxx_probeSensor() 6299 sensor = sif_probe(gspca_dev); zcxx_probeSensor() 6300 if (sensor >= 0) zcxx_probeSensor() 6301 return sensor; zcxx_probeSensor() 6304 sensor = vga_2wr_probe(gspca_dev); zcxx_probeSensor() 6305 if (sensor >= 0) zcxx_probeSensor() 6306 return sensor; zcxx_probeSensor() 6322 sd->sensor = id->driver_info; sd_config() 6441 V4L2_CID_GAMMA, 1, 6, 1, gamma[sd->sensor]); sd_init_controls() 6442 if (sd->sensor == SENSOR_HV7131R) sd_init_controls() 6447 if (sd->sensor != SENSOR_OV7630C) sd_init_controls() 6454 sd->sensor == SENSOR_PO2030 ? 0 : 2); sd_init_controls() 6464 if (sd->sensor == SENSOR_HV7131R) sd_init_controls() 6474 int sensor; sd_init() local 6497 sensor = zcxx_probeSensor(gspca_dev); sd_init() 6498 if (sensor >= 0) sd_init() 6499 PDEBUG(D_PROBE, "probe sensor -> %04x", sensor); sd_init() 6501 sd->sensor = force_sensor; sd_init() 6502 PDEBUG(D_PROBE, "sensor forced to %d", force_sensor); sd_init() 6504 switch (sensor) { sd_init() 6506 switch (sd->sensor) { sd_init() 6514 pr_warn("Unknown sensor - set to TAS5130C\n"); sd_init() 6515 sd->sensor = SENSOR_TAS5130C; sd_init() 6519 /* check the sensor type */ sd_init() 6520 sensor = i2c_read(gspca_dev, 0x00); sd_init() 6521 PDEBUG(D_PROBE, "Sensor hv7131 type %d", sensor); sd_init() 6522 switch (sensor) { sd_init() 6526 sd->sensor = SENSOR_HV7131B; sd_init() 6531 sd->sensor = SENSOR_HV7131R; sd_init() 6537 sd->sensor = SENSOR_TAS5130C; sd_init() 6541 sd->sensor = SENSOR_CS2102; sd_init() 6545 sd->sensor = SENSOR_HDCS2020; sd_init() 6551 sd->sensor = SENSOR_PB0330; sd_init() 6555 sd->sensor = SENSOR_ICM105A; sd_init() 6559 sd->sensor = SENSOR_PAS202B; sd_init() 6563 sd->sensor = SENSOR_PAS106; sd_init() 6568 sd->sensor = SENSOR_TAS5130C; sd_init() 6572 sd->sensor = SENSOR_HV7131R; sd_init() 6579 sd->sensor = sd->bridge == BRIDGE_ZC301 sd_init() 6587 sd->sensor = SENSOR_CS2102K; sd_init() 6591 sd->sensor = SENSOR_ADCM2700; sd_init() 6595 sd->sensor = SENSOR_GC0305; sd_init() 6599 sd->sensor = SENSOR_GC0303; sd_init() 6603 sd->sensor = SENSOR_PO2030; sd_init() 6607 sd->sensor = SENSOR_OV7620; sd_init() 6611 sd->sensor = SENSOR_OV7630C; sd_init() 6615 sd->sensor = SENSOR_OV7620; /* same sensor (?) */ sd_init() 6618 pr_err("Unknown sensor %04x\n", sensor); sd_init() 6622 if (sensor < 0x20) { sd_init() 6623 if (sensor == -1 || sensor == 0x10 || sensor == 0x12) sd_init() 6629 switch (mode_tb[sd->sensor]) { sd_init() 6708 switch (sd->sensor) { sd_start() 6716 usb_exchange(gspca_dev, init_tb[sd->sensor][mode]); sd_start() 6718 switch (sd->sensor) { sd_start() 6729 if (sd->sensor == SENSOR_TAS5130C) sd_start() 6740 if (sd->sensor == SENSOR_HV7131R) sd_start() 6746 switch (sd->sensor) { sd_start() 6765 switch (sd->sensor) { sd_start() 6777 switch (sd->sensor) { sd_start() 6790 switch (sd->sensor) { sd_start() 6849 send_unknown(gspca_dev, sd->sensor); sd_stop0() 7021 "Force sensor. Only for experts!!!");
|
H A D | zc3xx-reg.h | 39 /* Stream and sensor specific */ 86 /* Window inside the sensor array */ 100 /* Max sensor array size */
|
/linux-4.1.27/drivers/staging/comedi/drivers/ |
H A D | jr3_pci.h | 35 * Raw_data is the raw data received directly from the sensor. The 36 * sensor data stream is capable of representing 16 different 37 * channels. Channel 0 shows the excitation voltage at the sensor. It 40 * 7 contains the sensor's calibration data. The use of channels 8-15 131 * initialization. The sensor_change bit indicates that a sensor other 141 * coordinate transformation, or new sensor full scale is set by the 145 * sensor is plugged in and the system needs to recalculate the 154 * communication. The calibration data stored inside the sensor is 155 * transmitted to the JR3 DSP along with the sensor data. The 158 * received from the sensor. There are two reasons the CRC may not 161 * has been corrupted. A typical sensor transmits the entire contents 163 * this bit is not zero within a couple of seconds after the sensor 164 * has been plugged in, there is a problem with the sensor's 171 /* The watch_dog and watch_dog2 bits are sensor, not processor, watch 172 * dog bits. Watch_dog indicates that the sensor data line seems to be 173 * acting correctly, while watch_dog2 indicates that sensor data and 177 * the sensor data is not being received correctly. 264 /* JR3 force/torque sensor data definition. For more information see sensor 270 /* the sensor. */ 280 /* Shunts contains the sensor shunt readings. Some JR3 sensors have 284 * this ability, the gain of each sensor channel is measured at 290 * sensor, and made new shunt measurements, those shunt 294 * the sensor cannot have its gain changed. For details on 295 * changing the sensor gain, and making shunts readings, please 296 * see the sensor manual. To make these values take effect the 321 * software allows the user to set the sensor full scale to an 368 /* Full_scale is the sensor full scales which are currently in use. 382 /* Offsets contains the sensor offsets. These values are subtracted from 383 * the sensor data to obtain the decoupled data. The offsets are set a 411 /* Filter0 is the decoupled, unfiltered data from the JR3 sensor. 417 * frequency of filter1 is 1/16 of the sample rate from the sensor. 418 * For a typical sensor with a sample rate of 8 kHz, the cutoff 441 * for minimums and maximums at full sensor bandwidth. This area is 448 * also lost when plugging in a new sensor. 455 * the raw sensor is saturated. Because of decoupling and offset 457 * sensor is saturated. These values, in conjunction with the error 477 * is 1, the rates are calculated at full sensor bandwidth. If 511 * calculated at the sensor data bandwidth. So this counter would 512 * increment at 8 kHz for a typical sensor. The rest of the counters 529 * counter is changing rapidly, it probably indicates a bad sensor 533 * without a hardware problem. If the sensor is well grounded, this 571 /* EEProm_ver_no contains the version number of the sensor EEProm. 590 * sensor. This model number does not directly correspond to the JR3 592 * different sensor configurations. 598 /* Cal_day & cal_year are the sensor calibration date. Day is the 607 * units used in the sensor full scale. The meanings of particular 610 * specifications during sensor manufacture and cannot be changed by 616 * Channels is a bit field showing which channels the current sensor 617 * is capable of sending. If bit 0 is active, this sensor can send 618 * channel 0, if bit 13 is active, this sensor can send channel 13, 619 * etc. This bit can be active, even if the sensor is not currently 633 /* Thickness specifies the overall thickness of the sensor from 635 * contained in units (pg. 16). The sensor calibration is relative 636 * to the center of the sensor. This value allows easy coordinate 637 * transformation from the center of the sensor to either flange.
|
/linux-4.1.27/drivers/macintosh/ |
H A D | windfarm_pm121.c | 104 * sensor : hard-drive-temp 114 * sensor : hard-drive-temp 126 * sensor : optical-drive-temp 136 * sensor : optical-drive-temp 148 * sensor : gpu-temp 158 * sensor : gpu-temp 170 * sensor : north-bridge-temp 180 * sensor : north-bridge-temp 198 * sensor : cpu-temp 363 struct wf_sensor **sensor; /* use sensor_id instead ? */ member in struct:pm121_sys_param 373 .sensor = &sensor_gpu_temp, 379 .sensor = &sensor_gpu_temp, 388 .sensor = &sensor_hard_drive_temp, 394 .sensor = &sensor_hard_drive_temp, 403 .sensor = &sensor_north_bridge_temp, 409 .sensor = &sensor_north_bridge_temp, 418 .sensor = &sensor_optical_drive_temp, 424 .sensor = &sensor_optical_drive_temp, 594 struct wf_sensor *sensor; pm121_sys_fans_tick() local 601 sensor = *(param->sensor); pm121_sys_fans_tick() 611 rc = sensor->ops->get_value(sensor, &temp); pm121_sys_fans_tick() 613 printk(KERN_WARNING "windfarm: %s sensor error %d\n", pm121_sys_fans_tick() 614 sensor->name, rc); pm121_sys_fans_tick() 620 loop_names[loop_id], sensor->name, pm121_sys_fans_tick() 745 printk(KERN_WARNING "pm121: CPU temp sensor error %d\n", pm121_cpu_fans_tick() 753 printk(KERN_WARNING "pm121: CPU power sensor error %d\n", pm121_cpu_fans_tick() 865 * _and_ no other failure is present. Since a sensor error will pm121_tick() 907 static struct wf_sensor* pm121_register_sensor(struct wf_sensor *sensor, pm121_register_sensor() argument 911 if (*var == NULL && !strcmp(sensor->name, match)) { pm121_register_sensor() 912 if (wf_get_sensor(sensor) == 0) pm121_register_sensor() 913 *var = sensor; pm121_register_sensor() 960 pr_debug("pm121: new sensor %s detected\n", pm121_notify()
|
H A D | windfarm_max6690_sensor.c | 2 * Windfarm PowerMac thermal control. MAX6690 sensor. 21 /* This currently only exports the external temperature sensor, 92 printk(KERN_ERR "windfarm: Couldn't create MAX6690 sensor: " wf_max6690_probe() 136 MODULE_DESCRIPTION("MAX6690 sensor objects for PowerMac thermal control");
|
H A D | windfarm_lm87_sensor.c | 2 * Windfarm PowerMac thermal control. LM87 sensor 111 * care about the internal temperature sensor wf_lm87_probe() 129 pr_warning("wf_lm87: Unsupported sensor %s\n", wf_lm87_probe() 159 /* release sensor */ wf_lm87_remove() 199 MODULE_DESCRIPTION("LM87 sensor objects for PowerMacs thermal control");
|
H A D | windfarm_smu_sensors.c | 212 * properties, while Darwin uses the sensor-id's. smu_ads_create() 218 if (!strcmp(c, "temp-sensor") && smu_ads_create() 227 } else if (!strcmp(c, "current-sensor") && smu_ads_create() 236 } else if (!strcmp(c, "voltage-sensor") && smu_ads_create() 245 } else if (!strcmp(c, "power-sensor") && smu_ads_create() 271 * SMU Power combo sensor object 355 printk(KERN_INFO "windfarm: CPU Power sensor using faked" smu_cpu_power_create() 451 /* Create CPU power sensor if possible */ smu_sensors_init() 463 /* dispose of power sensor */ smu_sensors_exit() 480 MODULE_DESCRIPTION("SMU sensor objects for PowerMacs thermal control");
|
H A D | windfarm_lm75_sensor.c | 2 * Windfarm PowerMac thermal control. LM75 sensor 107 /* Usual rant about sensor names not beeing very consistent in wf_lm75_probe() 155 /* release sensor */ wf_lm75_remove() 180 MODULE_DESCRIPTION("LM75 sensor objects for PowerMacs thermal control");
|
H A D | windfarm_smu_sat.c | 263 if (strcmp(type, "voltage-sensor") == 0) { wf_sat_probe() 267 } else if (strcmp(type, "current-sensor") == 0) { wf_sat_probe() 271 } else if (strcmp(type, "temp-sensor") == 0) { wf_sat_probe() 281 "%s sensor %d (no memory)\n", name, cpu); wf_sat_probe() 308 "sensor %d (no memory)\n", cpu); wf_sat_probe()
|
H A D | windfarm_core.c | 14 * Add some information about sensor/control type and data format to 21 * I may have to create full features kobjects for every sensor/control 303 DBG("wf: Deleting sensor %s\n", sr->name); wf_sensor_release() 332 " duplicate sensor %s\n", sr->name); wf_register_sensor() 350 DBG("wf: Registered sensor %s\n", new_sr->name); wf_register_sensor() 365 DBG("wf: Unregistered sensor %s\n", sr->name); wf_unregister_sensor()
|
H A D | windfarm_pm91.c | 21 * with one sensor and one fan. Slots area is a bit different as the Darwin 23 * involves the presence of an AGP sensor and an AGP fan (possibly on the 25 * access to those additional sensor/fans for now (though ultimately, it would 26 * be possible to add sensor objects for them) so I'm only implementing the 232 printk(KERN_WARNING "windfarm: CPU temp sensor error %d\n", wf_smu_cpu_fans_tick() 240 printk(KERN_WARNING "windfarm: CPU power sensor error %d\n", wf_smu_cpu_fans_tick() 341 printk(KERN_WARNING "windfarm: HD temp sensor error %d\n", wf_smu_drive_fans_tick() 422 printk(KERN_WARNING "windfarm: Slots power sensor error %d\n", wf_smu_slots_fans_tick() 525 * _and_ no other failure is present. Since a sensor error will wf_smu_tick() 619 DBG("wf: new sensor %s detected\n", wf_smu_notify() 661 * that the attribute callback won't race with the sensor beeing wf_smu_remove()
|
H A D | windfarm_pm112.c | 185 /* We max all CPU fans in case of a sensor error. We also do the cpu_max_all_fans() 280 "sensor error %d\n", cpu, err); cpu_fans_tick() 295 "sensor error %d\n", cpu, err); cpu_fans_tick() 373 printk(KERN_WARNING "windfarm: U4 temp sensor error %d\n", backside_fan_tick() 423 printk(KERN_WARNING "windfarm: drive bay temp sensor " drive_bay_fan_tick() 470 printk(KERN_WARNING "windfarm: slots power sensor error %d\n", slots_fan_tick()
|
/linux-4.1.27/drivers/iio/temperature/ |
H A D | mlx90614.c | 2 * mlx90614.c - Support for Melexis MLX90614 contactless IR temperature sensor 11 * Driver for the Melexis MLX90614 I2C 16-bit IR thermopile sensor 42 #define MLX90614_CONFIG_DUAL_SHIFT 6 /* single (0) or dual (1) IR sensor */ 139 /* Return 0 for single sensor, 1 for dual sensor, <0 on error. */ mlx90614_probe_num_ir_sensors() 178 dev_dbg(&client->dev, "Found single sensor"); mlx90614_probe() 183 dev_dbg(&client->dev, "Found dual sensor"); mlx90614_probe() 220 MODULE_DESCRIPTION("Melexis MLX90614 contactless IR temperature sensor driver");
|
H A D | tmp006.c | 2 * tmp006.c - Support for TI TMP006 IR thermopile sensor 10 * Driver for the Texas Instruments I2C 16-bit IR thermopile sensor 211 dev_err(&client->dev, "no TMP006 sensor\n"); tmp006_probe() 292 MODULE_DESCRIPTION("TI TMP006 IR thermopile sensor driver");
|
/linux-4.1.27/arch/x86/kernel/cpu/ |
H A D | powerflags.c | 10 "ts", /* temperature sensor */
|
/linux-4.1.27/include/linux/ |
H A D | f75375s.h | 2 * f75375s.h - platform data structure for f75375s sensor
|
H A D | hid-sensor-hub.h | 23 #include <linux/hid-sensor-ids.h> 115 * Used to open hid device for sensor hub. 123 * Used to clode hid device for sensor hub. 155 /* Hid sensor hub core interfaces */ 225 /* hid-sensor-attributes */ 227 /* Common hid sensor iio structure */
|
H A D | atmel-mci.h | 13 * @wp_pin: GPIO pin wired to the write protect sensor
|
/linux-4.1.27/drivers/media/platform/s3c-camif/ |
H A D | camif-core.c | 43 /* CAMIF / external camera sensor master clock */ 198 struct s3c_camif_sensor_info *sensor = &camif->pdata.sensor; camif_register_sensor() local 205 camif->sensor.sd = NULL; camif_register_sensor() 207 if (sensor->i2c_board_info.addr == 0) camif_register_sensor() 210 adapter = i2c_get_adapter(sensor->i2c_bus_num); camif_register_sensor() 213 sensor->i2c_bus_num); camif_register_sensor() 218 &sensor->i2c_board_info, NULL); camif_register_sensor() 222 sensor->i2c_board_info.type); camif_register_sensor() 225 camif->sensor.sd = sd; camif_register_sensor() 227 v4l2_info(v4l2_dev, "registered sensor subdevice %s\n", sd->name); camif_register_sensor() 240 v4l2_info(sd, "Initial format from sensor: %dx%d, %#x\n", camif_register_sensor() 248 struct v4l2_subdev *sd = camif->sensor.sd; camif_unregister_sensor() 257 camif->sensor.sd = NULL; camif_unregister_sensor() 266 ret = media_entity_create_link(&camif->sensor.sd->entity, 0, camif_create_media_links() 462 camif->pdata.sensor.clock_frequency); s3c_camif_probe() 464 dev_info(dev, "sensor clock frequency: %lu\n", s3c_camif_probe() 468 * Must be done before a sensor subdev is registered as some s3c_camif_probe() 469 * settings are overrode with values from sensor subdev. s3c_camif_probe()
|
H A D | camif-capture.c | 72 if (camif->sensor.sd == NULL || vp->out_fmt == NULL) s3c_camif_hw_init() 115 struct cam_sensor *sensor = &camif->sensor; sensor_set_power() local 118 if (!on == camif->sensor.power_count) sensor_set_power() 119 err = v4l2_subdev_call(sensor->sd, core, s_power, on); sensor_set_power() 121 sensor->power_count += on ? 1 : -1; sensor_set_power() 124 on, sensor->power_count, err); sensor_set_power() 131 struct cam_sensor *sensor = &camif->sensor; sensor_set_streaming() local 134 if (!on == camif->sensor.stream_count) sensor_set_streaming() 135 err = v4l2_subdev_call(sensor->sd, video, s_stream, on); sensor_set_streaming() 137 sensor->stream_count += on ? 1 : -1; sensor_set_streaming() 140 on, sensor->stream_count, err); sensor_set_streaming() 148 * turn off streaming at the data pipeline (sensor) if required. 670 struct v4l2_subdev *sensor = vp->camif->sensor.sd; s3c_camif_vidioc_enum_input() local 672 if (input->index || sensor == NULL) s3c_camif_vidioc_enum_input() 676 strlcpy(input->name, sensor->name, sizeof(input->name)); s3c_camif_vidioc_enum_input() 828 /* Only check pixel formats at the sensor and the camif subdev pads */ camif_pipeline_validate() 835 /* Retrieve format at the sensor subdev source pad */ camif_pipeline_validate() 842 ret = v4l2_subdev_call(camif->sensor.sd, pad, get_fmt, NULL, &src_fmt); camif_pipeline_validate() 859 struct media_entity *sensor = &camif->sensor.sd->entity; s3c_camif_streamon() local 873 ret = media_entity_pipeline_start(sensor, camif->m_pipeline); s3c_camif_streamon() 879 media_entity_pipeline_stop(sensor); s3c_camif_streamon() 903 media_entity_pipeline_stop(&camif->sensor.sd->entity); s3c_camif_streamoff()
|
/linux-4.1.27/drivers/net/ethernet/intel/igb/ |
H A D | igb_hwmon.c | 50 igb_attr->sensor->location); igb_hwmon_show_location() 64 value = igb_attr->sensor->temp; igb_hwmon_show_temp() 78 unsigned int value = igb_attr->sensor->caution_thresh; igb_hwmon_show_cautionthresh() 92 unsigned int value = igb_attr->sensor->max_op_thresh; igb_hwmon_show_maxopthresh() 102 * @ offset: offset in the eeprom sensor data table 103 * @ type: type of sensor data to display 146 igb_attr->sensor = igb_add_hwmon_attr() 147 &adapter->hw.mac.thermal_sensor_data.sensor[offset]; igb_add_hwmon_attr() 202 if (adapter->hw.mac.thermal_sensor_data.sensor[i].location == 0) igb_sysfs_init()
|
/linux-4.1.27/drivers/net/ethernet/intel/ixgbe/ |
H A D | ixgbe_sysfs.c | 49 ixgbe_attr->sensor->location); ixgbe_hwmon_show_location() 63 value = ixgbe_attr->sensor->temp; ixgbe_hwmon_show_temp() 77 unsigned int value = ixgbe_attr->sensor->caution_thresh; ixgbe_hwmon_show_cautionthresh() 91 unsigned int value = ixgbe_attr->sensor->max_op_thresh; ixgbe_hwmon_show_maxopthresh() 102 * @offset: offset in the eeprom sensor data table 103 * @type: type of sensor data to display 145 ixgbe_attr->sensor = ixgbe_add_hwmon_attr() 146 &adapter->hw.mac.thermal_sensor_data.sensor[offset]; ixgbe_add_hwmon_attr() 200 if (adapter->hw.mac.thermal_sensor_data.sensor[i].location == 0) ixgbe_sysfs_init()
|
/linux-4.1.27/drivers/staging/iio/addac/ |
H A D | adt7316.h | 2 * ADT7316 digital temperature sensor driver supporting ADT7316/7/8 ADT7516/7/9
|
H A D | adt7316-i2c.c | 3 * sensor, ADC and DAC 135 MODULE_DESCRIPTION("I2C bus driver for Analog Devices ADT7316/7/9 and ADT7516/7/8 digital temperature sensor, ADC and DAC");
|
H A D | adt7316-spi.c | 3 * sensor, ADC and DAC 143 MODULE_DESCRIPTION("SPI bus driver for Analog Devices ADT7316/7/8 and ADT7516/7/9 digital temperature sensor, ADC and DAC");
|
/linux-4.1.27/drivers/staging/iio/cdc/ |
H A D | ad7746.h | 2 * AD7746 capacitive sensor driver supporting AD7745, AD7746 and AD7747
|
/linux-4.1.27/include/linux/input/ |
H A D | kxtj9.h | 31 * changed to account for sensor orientation within the host device. 38 * Each axis can be negated to account for sensor orientation within
|
/linux-4.1.27/drivers/media/usb/em28xx/ |
H A D | em28xx-camera.c | 179 em28xx_info("unknown Micron sensor detected: 0x%04x\n", em28xx_probe_sensor_micron() 185 em28xx_info("unsupported sensor detected: %s\n", name); em28xx_probe_sensor_micron() 187 em28xx_info("sensor %s detected\n", name); em28xx_probe_sensor_micron() 284 em28xx_info("unknown OmniVision sensor detected: 0x%04x\n", em28xx_probe_sensor_omnivision() 290 em28xx_info("unsupported sensor detected: %s\n", name); em28xx_probe_sensor_omnivision() 292 em28xx_info("sensor %s detected\n", name); em28xx_probe_sensor_omnivision() 316 em28xx_info("No sensor detected\n"); em28xx_detect_sensor() 410 * FIXME: sensor supports resolutions up to 1600x1200, but em28xx_init_camera() 412 * - switch sensor output resolution (including further em28xx_init_camera()
|
/linux-4.1.27/drivers/media/usb/pwc/ |
H A D | pwc-if.c | 195 /* The ToUCam Fun CMOS sensor causes the firmware to send 2 or 3 bogus pwc_frame_complete() 203 PWC_TRACE("Hyundai CMOS sensor bug. Dropping frame.\n"); pwc_frame_complete() 534 return "Hyundai CMOS sensor"; pwc_sensor_type_to_string() 536 return "Sony CCD sensor + TDA8787"; pwc_sensor_type_to_string() 538 return "Sony CCD sensor + Exas 98L59"; pwc_sensor_type_to_string() 540 return "Sony CCD sensor + ADI 9804"; pwc_sensor_type_to_string() 542 return "Sharp CCD sensor + TDA8787"; pwc_sensor_type_to_string() 544 return "Sharp CCD sensor + Exas 98L59"; pwc_sensor_type_to_string() 546 return "Sharp CCD sensor + ADI 9804"; pwc_sensor_type_to_string() 548 return "UPA 1021 sensor"; pwc_sensor_type_to_string() 550 return "VGA sensor"; pwc_sensor_type_to_string() 552 return "PAL MR sensor"; pwc_sensor_type_to_string() 554 return "unknown type of sensor"; pwc_sensor_type_to_string() 833 type_id = 740; /* CCD sensor */ usb_pwc_probe() 838 type_id = 740; /* CCD sensor */ usb_pwc_probe() 843 type_id = 740; /* CCD sensor */ usb_pwc_probe() 850 type_id = 740; /* CCD sensor */ usb_pwc_probe() 855 type_id = 740; /* CCD sensor */ usb_pwc_probe() 862 type_id = 740; /* CCD sensor */ usb_pwc_probe() 870 type_id = 740; /* CCD sensor */ usb_pwc_probe() 875 type_id = 740; /* CCD sensor */ usb_pwc_probe() 889 I suppose the difference is the sensor, but both cameras usb_pwc_probe() 963 type_id = 740; /* CCD sensor */ usb_pwc_probe() 968 type_id = 730; /* CMOS sensor */ usb_pwc_probe() 1039 /* Query sensor type */ usb_pwc_probe()
|
/linux-4.1.27/drivers/iio/light/ |
H A D | cm32181.c | 69 * Initialize CM32181 ambient light sensor register to default values. 104 * cm32181_read_als_it() - Get sensor integration time (ms) 131 * cm32181_write_als_it() - Write sensor integration time 135 * Convert integration time (ms) to sensor value. 171 * Convert sensor raw data to lux. It depends on integration 370 MODULE_DESCRIPTION("CM32181 ambient light sensor driver");
|
H A D | cm3232.c | 83 * Check and initialize CM3232 ambient light sensor. 126 * cm3232_read_als_it() - Get sensor integration time 155 * cm3232_write_als_it() - Write sensor integration time 160 * Convert integration time to sensor value. 196 * Convert sensor data to lux. It depends on integration 438 MODULE_DESCRIPTION("CM3232 ambient light sensor driver");
|
H A D | vcnl4000.c | 3 * proximity sensor 172 dev_info(&client->dev, "VCNL4000 Ambient light/proximity sensor, Prod %02x, Rev: %02x\n", vcnl4000_probe() 197 MODULE_DESCRIPTION("Vishay VCNL4000 proximity/ambient light sensor driver");
|
H A D | adjd_s311.c | 2 * adjd_s311.c - Support for ADJD-S311-CR999 digital color sensor 10 * driver for ADJD-S311-CR999 digital color sensor (10-bit channels for 282 dev_info(&client->dev, "ADJD-S311 color sensor registered\n"); adjd_s311_probe() 320 MODULE_DESCRIPTION("ADJD-S311 color sensor");
|
H A D | cm3323.c | 30 #define CM3323_CONF_SD_BIT BIT(0) /* sensor disable */ 93 /* enable sensor and set auto force mode */ cm3323_init()
|
H A D | tsl4531.c | 2 * tsl4531.c - Support for TAOS TSL4531 ambient light sensor 184 dev_err(&client->dev, "no TSL4531 sensor\n"); tsl4531_probe()
|
H A D | isl29125.c | 2 * isl29125.c - Support for Intersil ISL29125 RGB light sensor 10 * RGB light sensor with 16-bit channels for red, green, blue); 346 MODULE_DESCRIPTION("ISL29125 RGB light sensor driver");
|
/linux-4.1.27/drivers/macintosh/ams/ |
H A D | ams-core.c | 31 /* There is only one motion sensor per machine */ 203 /* Found I2C motion sensor */ ams_init() 210 /* Found PMU motion sensor */ ams_init()
|
/linux-4.1.27/drivers/pci/hotplug/ |
H A D | rpaphp_pci.c | 44 dbg("%s: slot must be power up to get sensor-state\n", rpaphp_get_sensor_state() 48 * before get-sensor will succeed. rpaphp_get_sensor_state() 62 err("%s failed to get sensor state\n", __func__); rpaphp_get_sensor_state()
|
/linux-4.1.27/drivers/hid/ |
H A D | hid-sensor-custom.c | 2 * hid-sensor-custom.c 25 #include <linux/hid-sensor-hub.h> 85 {0x200201, "event-sensor-state"}, 86 {0x200202, "event-sensor-event"}, 89 {0x200303, "property-sensor-status"}, 91 {0x200305, "property-sensor-manufacturer"}, 92 {0x200306, "property-sensor-model"}, 93 {0x200307, "property-sensor-serial-number"}, 94 {0x200308, "property-sensor-description"}, 95 {0x200309, "property-sensor-connection-type"}, 96 {0x20030A, "property-sensor-device-path"}, 847 MODULE_DESCRIPTION("HID Sensor Custom and Generic sensor Driver");
|
H A D | Makefile | 102 obj-$(CONFIG_HID_SENSOR_HUB) += hid-sensor-hub.o 103 obj-$(CONFIG_HID_SENSOR_CUSTOM_SENSOR) += hid-sensor-custom.o
|
/linux-4.1.27/drivers/media/i2c/m5mols/ |
H A D | m5mols_reg.h | 2 * Register map for M-5MOLS 8M Pixel camera sensor with ISP 49 * & all-round system of sensor. It deals with version/interrupt/setting mode & 50 * even sensor's status. Especially, the M-5MOLS sensor with ISP varies by 98 * between the sensor and the Application Processor/even the image effect. 108 /* Video bus between the sensor and a host processor */
|
H A D | m5mols.h | 2 * Header for M-5MOLS 8M Pixel camera sensor with ISP 148 * about manufacturer and the vendor of the sensor's packaging. The least 192 * @power: current sensor's power status 301 * | SYSTEM | SYSTEM(only after sensor arm-booting) |
|
/linux-4.1.27/drivers/iio/humidity/ |
H A D | si7005.c | 2 * si7005.c - Support for Silabs Si7005 humidity and temperature sensor 188 MODULE_DESCRIPTION("Silabs Si7005 humidity and temperature sensor driver");
|
/linux-4.1.27/drivers/platform/x86/ |
H A D | intel_mid_thermal.c | 112 * @min: minimum value for the sensor 113 * @max: maximum value for the sensor 131 * The adc code vs sensor temp curve is split into five parts 170 * @temp: holds the current temperature for the sensor after reading 261 /* Enable all the sensor channels */ set_up_therm_channel() 399 * @index: index of the sensor 411 /* Set the base addr of the channel for this sensor */ initialize_sensor() 496 /* Register each sensor with the generic thermal framework*/ mid_thermal_probe()
|
/linux-4.1.27/include/linux/platform_data/ |
H A D | keypad-pxa27x.h | 16 * _plus_ the number of rotary-encoder sensor inputs, this can be
|
/linux-4.1.27/arch/sh/boards/mach-highlander/ |
H A D | irq-r7785rp.c | 25 TH_ALERT, /* Temperature sensor */
|
/linux-4.1.27/arch/powerpc/kernel/ |
H A D | rtas-proc.c | 113 #define SENSOR_PREFIX "ibm,sensor-" 122 struct individual_sensor sensor[MAX_SENSORS]; member in struct:rtas_sensors 416 int get_sensor_state = rtas_token("get-sensor-state"); ppc_rtas_sensors_show() 428 struct individual_sensor *p = &sensors.sensor[i]; ppc_rtas_sensors_show() 436 /* A sensor may have multiple instances */ ppc_rtas_sensors_show() 470 sensors.sensor[i].token = *utmp++; ppc_rtas_find_all_sensors() 471 sensors.sensor[i].quant = *utmp++; ppc_rtas_find_all_sensors() 510 * Builds a string out of what the sensor said 540 /* What kind of sensor do we have here? */ ppc_rtas_process_sensor() 646 seq_printf(m, "Unknown sensor (type %d), ignoring it\n", ppc_rtas_process_sensor()
|
/linux-4.1.27/include/linux/mfd/ |
H A D | cros_ec_commands.h | 144 * The default value a temperature sensor will return when it is present but 1188 * Dump command returns all motion sensor data including motion sense 1189 * module flags and individual sensor flags. 1194 * Info command returns data describing the details of a given sensor, 1208 * rate of a specific motion sensor in millihertz. 1214 * a specified motion sensor in +/-G's or +/- deg/s. 1243 /* List of motion sensor types. */ 1249 /* List of motion sensor locations. */ 1255 /* List of motion sensor chips. */ 1319 /* Flags representing the motion sensor module. */ 1322 /* Flags for each sensor in enum motionsensor_id. */ 1325 /* Array of all sensor data. Each sensor is 3-axis. */ 1472 /* Thermal configuration for one temperature sensor. Temps are in degrees K. 1481 /* Version 1 - get config for one sensor. */ 1487 /* Version 1 - set config for one sensor. 1674 /* Temperature sensor commands */ 1676 /* Read temperature sensor info */ 2247 * register determines which sensor is affected by the THRESHOLD and COMMIT 2253 * which sensor(s) are responsible. Each reading of the ID register clears and 2254 * returns one sensor ID that has crossed one of its threshold (in either 2256 * have tripped". Setting or enabling the thresholds for a sensor will clear 2257 * the unread event count for that sensor. 2264 * bit 0 selects the threshold index for the chosen sensor (0/1) 2273 * Set the thresholds for sensor 2 to 50 C and 60 C: 2274 * write 2 to [0x05] -- select temp sensor 2 2281 * write 2 to [0x05] -- select temp sensor 2
|
/linux-4.1.27/drivers/media/platform/marvell-ccic/ |
H A D | mmp-driver.c | 150 * Provide power to the sensor. mmpcam_power_up() 177 * Shut down the sensor. mmpcam_power_down() 228 * or in the sensor driver dynamically. mmpcam_calc_dphy() 236 * that the sensor has driven the data mmpcam_calc_dphy() 406 dev_err(&pdev->dev, "Can't get sensor power gpio %d", mmpcam_probe() 414 dev_err(&pdev->dev, "Can't get sensor reset gpio %d", mmpcam_probe()
|
H A D | cafe-driver.c | 4 * sensor. 65 * "General purpose register" has a couple of GPIOs used for sensor 80 * with the sensor. 95 #define TWSIC0_MASKACK 0x00400000 /* Mask ack from sensor */ 405 * Part one of the sensor dance: turn the global cafe_ctlr_power_up() 411 * Put the sensor into operational mode (assumes OLPC-style cafe_ctlr_power_up() 512 * stay that way until the sensor driver shows up. cafe_pci_probe() 518 * because the sensor could attach in this call chain, leading to cafe_pci_probe()
|
/linux-4.1.27/drivers/iio/imu/inv_mpu6050/ |
H A D | inv_mpu_ring.c | 49 /* disable the sensor output to FIFO */ inv_reset_fifo() 80 /* enable sensor output to FIFO */ inv_reset_fifo()
|
/linux-4.1.27/drivers/char/ |
H A D | i8k.c | 317 static int i8k_get_temp_type(int sensor) i8k_get_temp_type() argument 321 regs.ebx = sensor & 0xff; i8k_get_temp_type() 328 static int _i8k_get_temp(int sensor) _i8k_get_temp() argument 332 .ebx = sensor & 0xff, _i8k_get_temp() 338 static int i8k_get_temp(int sensor) i8k_get_temp() argument 340 int temp = _i8k_get_temp(sensor); i8k_get_temp() 343 * Sometimes the temperature sensor returns 0x99, which is out of range. i8k_get_temp() 351 temp = _i8k_get_temp(sensor); i8k_get_temp()
|
/linux-4.1.27/arch/arm/mach-pxa/ |
H A D | stargate2.c | 123 /* Basic sensor board */ 131 /* Basic sensor board */ 164 /* The two voltages available to sensor boards */ 551 { /* UCAM sensor board */ 557 /* Through a nand gate - Also beware, on V2 sensor board the 564 /* Through a nand gate - Also beware, on V2 sensor board the 942 /* Through a nand gate - Also beware, on V2 sensor board the 949 /* Through a nand gate - Also beware, on V2 sensor board the
|
/linux-4.1.27/drivers/media/pci/solo6x10/ |
H A D | solo6x10-gpio.c | 47 /* To set extended gpio - sensor */ solo_gpio_mode()
|
/linux-4.1.27/drivers/media/platform/ |
H A D | via-camera.c | 42 "If set, the sensor will be instructed to flip the image " 61 struct v4l2_subdev *sensor; member in struct:via_camera 97 * that we can use to pass to the sensor. We always run the 98 * sensor in VGA resolution, though, and let the controller 124 v4l2_subdev_call(cam->sensor, optype, func, ##args) 205 * Power up the sensor and perform the reset dance. 247 * Configure the sensor. It's up to the caller to ensure 663 * need to power up the sensor. viacam_open() 867 * sensor to VGA. 963 * Let the sensor code look over and tweak the viacam_s_fmt_vid_cap() 1227 * Make sure the sensor's power state is correct viacam_resume() 1391 * Get the sensor powered up. viacam_probe() 1403 cam->sensor = v4l2_i2c_new_subdev_board(&cam->v4l2_dev, sensor_adapter, viacam_probe() 1405 if (cam->sensor == NULL) { viacam_probe() 1406 dev_err(&pdev->dev, "Unable to find the sensor!\n"); viacam_probe() 1436 /* Power the sensor down until somebody opens the device */ viacam_probe()
|
/linux-4.1.27/drivers/scsi/lpfc/ |
H A D | lpfc_logmsg.h | 29 #define LOG_TEMP 0x00000100 /* Temperature sensor events */
|
/linux-4.1.27/drivers/input/mouse/ |
H A D | rpcmouse.c | 15 * hardware registers that track the sensor count for the X-Y movement and
|