dln2 88 drivers/gpio/gpio-dln2.c static int dln2_gpio_pin_cmd(struct dln2_gpio *dln2, int cmd, unsigned pin) dln2 94 drivers/gpio/gpio-dln2.c return dln2_transfer_tx(dln2->pdev, cmd, &req, sizeof(req)); dln2 97 drivers/gpio/gpio-dln2.c static int dln2_gpio_pin_val(struct dln2_gpio *dln2, int cmd, unsigned int pin) dln2 106 drivers/gpio/gpio-dln2.c ret = dln2_transfer(dln2->pdev, cmd, &req, sizeof(req), &rsp, &len); dln2 115 drivers/gpio/gpio-dln2.c static int dln2_gpio_pin_get_in_val(struct dln2_gpio *dln2, unsigned int pin) dln2 119 drivers/gpio/gpio-dln2.c ret = dln2_gpio_pin_val(dln2, DLN2_GPIO_PIN_GET_VAL, pin); dln2 125 drivers/gpio/gpio-dln2.c static int dln2_gpio_pin_get_out_val(struct dln2_gpio *dln2, unsigned int pin) dln2 129 drivers/gpio/gpio-dln2.c ret = dln2_gpio_pin_val(dln2, DLN2_GPIO_PIN_GET_OUT_VAL, pin); dln2 135 drivers/gpio/gpio-dln2.c static int dln2_gpio_pin_set_out_val(struct dln2_gpio *dln2, dln2 143 drivers/gpio/gpio-dln2.c return dln2_transfer_tx(dln2->pdev, DLN2_GPIO_PIN_SET_OUT_VAL, &req, dln2 152 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 160 drivers/gpio/gpio-dln2.c ret = dln2_gpio_pin_cmd(dln2, DLN2_GPIO_PIN_ENABLE, offset); dln2 165 drivers/gpio/gpio-dln2.c ret = dln2_transfer(dln2->pdev, DLN2_GPIO_PIN_GET_DIRECTION, dln2 176 drivers/gpio/gpio-dln2.c clear_bit(offset, dln2->output_enabled); dln2 179 drivers/gpio/gpio-dln2.c set_bit(offset, dln2->output_enabled); dln2 187 drivers/gpio/gpio-dln2.c dln2_gpio_pin_cmd(dln2, DLN2_GPIO_PIN_DISABLE, offset); dln2 193 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 195 drivers/gpio/gpio-dln2.c dln2_gpio_pin_cmd(dln2, DLN2_GPIO_PIN_DISABLE, offset); dln2 200 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 202 drivers/gpio/gpio-dln2.c if (test_bit(offset, dln2->output_enabled)) dln2 210 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 218 drivers/gpio/gpio-dln2.c return dln2_gpio_pin_get_in_val(dln2, offset); dln2 220 drivers/gpio/gpio-dln2.c return dln2_gpio_pin_get_out_val(dln2, offset); dln2 225 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 227 drivers/gpio/gpio-dln2.c dln2_gpio_pin_set_out_val(dln2, offset, value); dln2 233 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 240 drivers/gpio/gpio-dln2.c ret = dln2_transfer_tx(dln2->pdev, DLN2_GPIO_PIN_SET_DIRECTION, dln2 246 drivers/gpio/gpio-dln2.c set_bit(offset, dln2->output_enabled); dln2 248 drivers/gpio/gpio-dln2.c clear_bit(offset, dln2->output_enabled); dln2 261 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 264 drivers/gpio/gpio-dln2.c ret = dln2_gpio_pin_set_out_val(dln2, offset, value); dln2 274 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(chip); dln2 281 drivers/gpio/gpio-dln2.c return dln2_transfer_tx(dln2->pdev, DLN2_GPIO_SET_DEBOUNCE, dln2 285 drivers/gpio/gpio-dln2.c static int dln2_gpio_set_event_cfg(struct dln2_gpio *dln2, unsigned pin, dln2 298 drivers/gpio/gpio-dln2.c return dln2_transfer_tx(dln2->pdev, DLN2_GPIO_PIN_SET_EVENT_CFG, dln2 305 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(gc); dln2 308 drivers/gpio/gpio-dln2.c set_bit(pin, dln2->unmasked_irqs); dln2 314 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(gc); dln2 317 drivers/gpio/gpio-dln2.c clear_bit(pin, dln2->unmasked_irqs); dln2 323 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(gc); dln2 328 drivers/gpio/gpio-dln2.c dln2->irq_type[pin] = DLN2_GPIO_EVENT_LVL_HIGH; dln2 331 drivers/gpio/gpio-dln2.c dln2->irq_type[pin] = DLN2_GPIO_EVENT_LVL_LOW; dln2 334 drivers/gpio/gpio-dln2.c dln2->irq_type[pin] = DLN2_GPIO_EVENT_CHANGE; dln2 337 drivers/gpio/gpio-dln2.c dln2->irq_type[pin] = DLN2_GPIO_EVENT_CHANGE_RISING; dln2 340 drivers/gpio/gpio-dln2.c dln2->irq_type[pin] = DLN2_GPIO_EVENT_CHANGE_FALLING; dln2 352 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(gc); dln2 354 drivers/gpio/gpio-dln2.c mutex_lock(&dln2->irq_lock); dln2 360 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = gpiochip_get_data(gc); dln2 366 drivers/gpio/gpio-dln2.c enabled = test_bit(pin, dln2->enabled_irqs); dln2 367 drivers/gpio/gpio-dln2.c unmasked = test_bit(pin, dln2->unmasked_irqs); dln2 371 drivers/gpio/gpio-dln2.c type = dln2->irq_type[pin] & DLN2_GPIO_EVENT_MASK; dln2 372 drivers/gpio/gpio-dln2.c set_bit(pin, dln2->enabled_irqs); dln2 375 drivers/gpio/gpio-dln2.c clear_bit(pin, dln2->enabled_irqs); dln2 378 drivers/gpio/gpio-dln2.c ret = dln2_gpio_set_event_cfg(dln2, pin, type, 0); dln2 380 drivers/gpio/gpio-dln2.c dev_err(dln2->gpio.parent, "failed to set event\n"); dln2 383 drivers/gpio/gpio-dln2.c mutex_unlock(&dln2->irq_lock); dln2 406 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2 = platform_get_drvdata(pdev); dln2 409 drivers/gpio/gpio-dln2.c dev_err(dln2->gpio.parent, "short event message\n"); dln2 414 drivers/gpio/gpio-dln2.c if (pin >= dln2->gpio.ngpio) { dln2 415 drivers/gpio/gpio-dln2.c dev_err(dln2->gpio.parent, "out of bounds pin %d\n", pin); dln2 419 drivers/gpio/gpio-dln2.c irq = irq_find_mapping(dln2->gpio.irq.domain, pin); dln2 421 drivers/gpio/gpio-dln2.c dev_err(dln2->gpio.parent, "pin %d not mapped to IRQ\n", pin); dln2 425 drivers/gpio/gpio-dln2.c switch (dln2->irq_type[pin]) { dln2 441 drivers/gpio/gpio-dln2.c struct dln2_gpio *dln2; dln2 456 drivers/gpio/gpio-dln2.c dln2 = devm_kzalloc(&pdev->dev, sizeof(*dln2), GFP_KERNEL); dln2 457 drivers/gpio/gpio-dln2.c if (!dln2) dln2 460 drivers/gpio/gpio-dln2.c mutex_init(&dln2->irq_lock); dln2 462 drivers/gpio/gpio-dln2.c dln2->pdev = pdev; dln2 464 drivers/gpio/gpio-dln2.c dln2->gpio.label = "dln2"; dln2 465 drivers/gpio/gpio-dln2.c dln2->gpio.parent = dev; dln2 466 drivers/gpio/gpio-dln2.c dln2->gpio.owner = THIS_MODULE; dln2 467 drivers/gpio/gpio-dln2.c dln2->gpio.base = -1; dln2 468 drivers/gpio/gpio-dln2.c dln2->gpio.ngpio = pins; dln2 469 drivers/gpio/gpio-dln2.c dln2->gpio.can_sleep = true; dln2 470 drivers/gpio/gpio-dln2.c dln2->gpio.set = dln2_gpio_set; dln2 471 drivers/gpio/gpio-dln2.c dln2->gpio.get = dln2_gpio_get; dln2 472 drivers/gpio/gpio-dln2.c dln2->gpio.request = dln2_gpio_request; dln2 473 drivers/gpio/gpio-dln2.c dln2->gpio.free = dln2_gpio_free; dln2 474 drivers/gpio/gpio-dln2.c dln2->gpio.get_direction = dln2_gpio_get_direction; dln2 475 drivers/gpio/gpio-dln2.c dln2->gpio.direction_input = dln2_gpio_direction_input; dln2 476 drivers/gpio/gpio-dln2.c dln2->gpio.direction_output = dln2_gpio_direction_output; dln2 477 drivers/gpio/gpio-dln2.c dln2->gpio.set_config = dln2_gpio_set_config; dln2 479 drivers/gpio/gpio-dln2.c platform_set_drvdata(pdev, dln2); dln2 481 drivers/gpio/gpio-dln2.c ret = devm_gpiochip_add_data(dev, &dln2->gpio, dln2); dln2 487 drivers/gpio/gpio-dln2.c ret = gpiochip_irqchip_add(&dln2->gpio, &dln2_gpio_irqchip, 0, dln2 53 drivers/i2c/busses/i2c-dln2.c static int dln2_i2c_enable(struct dln2_i2c *dln2, bool enable) dln2 60 drivers/i2c/busses/i2c-dln2.c tx.port = dln2->port; dln2 67 drivers/i2c/busses/i2c-dln2.c return dln2_transfer_tx(dln2->pdev, cmd, &tx, sizeof(tx)); dln2 70 drivers/i2c/busses/i2c-dln2.c static int dln2_i2c_write(struct dln2_i2c *dln2, u8 addr, dln2 81 drivers/i2c/busses/i2c-dln2.c } __packed *tx = dln2->buf; dln2 86 drivers/i2c/busses/i2c-dln2.c tx->port = dln2->port; dln2 94 drivers/i2c/busses/i2c-dln2.c ret = dln2_transfer_tx(dln2->pdev, DLN2_I2C_WRITE, tx, len); dln2 101 drivers/i2c/busses/i2c-dln2.c static int dln2_i2c_read(struct dln2_i2c *dln2, u16 addr, u8 *data, dln2 115 drivers/i2c/busses/i2c-dln2.c } __packed *rx = dln2->buf; dln2 120 drivers/i2c/busses/i2c-dln2.c tx.port = dln2->port; dln2 126 drivers/i2c/busses/i2c-dln2.c ret = dln2_transfer(dln2->pdev, DLN2_I2C_READ, &tx, sizeof(tx), dln2 143 drivers/i2c/busses/i2c-dln2.c struct dln2_i2c *dln2 = i2c_get_adapdata(adapter); dln2 153 drivers/i2c/busses/i2c-dln2.c ret = dln2_i2c_read(dln2, pmsg->addr, pmsg->buf, dln2 160 drivers/i2c/busses/i2c-dln2.c ret = dln2_i2c_write(dln2, pmsg->addr, pmsg->buf, dln2 190 drivers/i2c/busses/i2c-dln2.c struct dln2_i2c *dln2; dln2 194 drivers/i2c/busses/i2c-dln2.c dln2 = devm_kzalloc(dev, sizeof(*dln2), GFP_KERNEL); dln2 195 drivers/i2c/busses/i2c-dln2.c if (!dln2) dln2 198 drivers/i2c/busses/i2c-dln2.c dln2->buf = devm_kmalloc(dev, DLN2_I2C_BUF_SIZE, GFP_KERNEL); dln2 199 drivers/i2c/busses/i2c-dln2.c if (!dln2->buf) dln2 202 drivers/i2c/busses/i2c-dln2.c dln2->pdev = pdev; dln2 203 drivers/i2c/busses/i2c-dln2.c dln2->port = pdata->port; dln2 206 drivers/i2c/busses/i2c-dln2.c dln2->adapter.owner = THIS_MODULE; dln2 207 drivers/i2c/busses/i2c-dln2.c dln2->adapter.class = I2C_CLASS_HWMON; dln2 208 drivers/i2c/busses/i2c-dln2.c dln2->adapter.algo = &dln2_i2c_usb_algorithm; dln2 209 drivers/i2c/busses/i2c-dln2.c dln2->adapter.quirks = &dln2_i2c_quirks; dln2 210 drivers/i2c/busses/i2c-dln2.c dln2->adapter.dev.parent = dev; dln2 211 drivers/i2c/busses/i2c-dln2.c ACPI_COMPANION_SET(&dln2->adapter.dev, ACPI_COMPANION(&pdev->dev)); dln2 212 drivers/i2c/busses/i2c-dln2.c dln2->adapter.dev.of_node = dev->of_node; dln2 213 drivers/i2c/busses/i2c-dln2.c i2c_set_adapdata(&dln2->adapter, dln2); dln2 214 drivers/i2c/busses/i2c-dln2.c snprintf(dln2->adapter.name, sizeof(dln2->adapter.name), "%s-%s-%d", dln2 215 drivers/i2c/busses/i2c-dln2.c "dln2-i2c", dev_name(pdev->dev.parent), dln2->port); dln2 217 drivers/i2c/busses/i2c-dln2.c platform_set_drvdata(pdev, dln2); dln2 220 drivers/i2c/busses/i2c-dln2.c ret = dln2_i2c_enable(dln2, true); dln2 227 drivers/i2c/busses/i2c-dln2.c ret = i2c_add_adapter(&dln2->adapter); dln2 234 drivers/i2c/busses/i2c-dln2.c dln2_i2c_enable(dln2, false); dln2 241 drivers/i2c/busses/i2c-dln2.c struct dln2_i2c *dln2 = platform_get_drvdata(pdev); dln2 243 drivers/i2c/busses/i2c-dln2.c i2c_del_adapter(&dln2->adapter); dln2 244 drivers/i2c/busses/i2c-dln2.c dln2_i2c_enable(dln2, false); dln2 83 drivers/iio/adc/dln2-adc.c static void dln2_adc_add_demux(struct dln2_adc *dln2, dln2 87 drivers/iio/adc/dln2-adc.c struct dln2_adc_demux_table *p = dln2->demux_count ? dln2 88 drivers/iio/adc/dln2-adc.c &dln2->demux[dln2->demux_count - 1] : NULL; dln2 93 drivers/iio/adc/dln2-adc.c } else if (dln2->demux_count < DLN2_ADC_MAX_CHANNELS) { dln2 94 drivers/iio/adc/dln2-adc.c p = &dln2->demux[dln2->demux_count++]; dln2 101 drivers/iio/adc/dln2-adc.c static void dln2_adc_update_demux(struct dln2_adc *dln2) dln2 105 drivers/iio/adc/dln2-adc.c struct iio_dev *indio_dev = platform_get_drvdata(dln2->pdev); dln2 108 drivers/iio/adc/dln2-adc.c dln2->demux_count = 0; dln2 113 drivers/iio/adc/dln2-adc.c dln2_adc_add_demux(dln2, 0, 0, 16); dln2 114 drivers/iio/adc/dln2-adc.c dln2->ts_pad_offset = 0; dln2 115 drivers/iio/adc/dln2-adc.c dln2->ts_pad_length = 0; dln2 128 drivers/iio/adc/dln2-adc.c dln2_adc_add_demux(dln2, in_loc, out_loc, 2); dln2 136 drivers/iio/adc/dln2-adc.c dln2->ts_pad_offset = out_loc; dln2 137 drivers/iio/adc/dln2-adc.c dln2->ts_pad_length = ts_offset * sizeof(int64_t) - out_loc; dln2 139 drivers/iio/adc/dln2-adc.c dln2->ts_pad_offset = 0; dln2 140 drivers/iio/adc/dln2-adc.c dln2->ts_pad_length = 0; dln2 144 drivers/iio/adc/dln2-adc.c static int dln2_adc_get_chan_count(struct dln2_adc *dln2) dln2 147 drivers/iio/adc/dln2-adc.c u8 port = dln2->port; dln2 151 drivers/iio/adc/dln2-adc.c ret = dln2_transfer(dln2->pdev, DLN2_ADC_GET_CHANNEL_COUNT, dln2 154 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 163 drivers/iio/adc/dln2-adc.c static int dln2_adc_set_port_resolution(struct dln2_adc *dln2) dln2 167 drivers/iio/adc/dln2-adc.c .port = dln2->port, dln2 171 drivers/iio/adc/dln2-adc.c ret = dln2_transfer_tx(dln2->pdev, DLN2_ADC_SET_RESOLUTION, dln2 174 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 179 drivers/iio/adc/dln2-adc.c static int dln2_adc_set_chan_enabled(struct dln2_adc *dln2, dln2 184 drivers/iio/adc/dln2-adc.c .port = dln2->port, dln2 189 drivers/iio/adc/dln2-adc.c ret = dln2_transfer_tx(dln2->pdev, cmd, &port_chan, sizeof(port_chan)); dln2 191 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 196 drivers/iio/adc/dln2-adc.c static int dln2_adc_set_port_enabled(struct dln2_adc *dln2, bool enable, dln2 200 drivers/iio/adc/dln2-adc.c u8 port = dln2->port; dln2 208 drivers/iio/adc/dln2-adc.c ret = dln2_transfer(dln2->pdev, cmd, &port, sizeof(port), dln2 211 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s(%d)\n", dln2 223 drivers/iio/adc/dln2-adc.c static int dln2_adc_set_chan_period(struct dln2_adc *dln2, dln2 234 drivers/iio/adc/dln2-adc.c .port_chan.port = dln2->port, dln2 240 drivers/iio/adc/dln2-adc.c ret = dln2_transfer_tx(dln2->pdev, DLN2_ADC_CHANNEL_SET_CFG, dln2 243 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 248 drivers/iio/adc/dln2-adc.c static int dln2_adc_read(struct dln2_adc *dln2, unsigned int channel) dln2 251 drivers/iio/adc/dln2-adc.c struct iio_dev *indio_dev = platform_get_drvdata(dln2->pdev); dln2 256 drivers/iio/adc/dln2-adc.c .port = dln2->port, dln2 264 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_chan_enabled(dln2, channel, true); dln2 268 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_port_enabled(dln2, true, &conflict); dln2 271 drivers/iio/adc/dln2-adc.c dev_err(&dln2->pdev->dev, dln2 284 drivers/iio/adc/dln2-adc.c ret = dln2_transfer(dln2->pdev, DLN2_ADC_CHANNEL_GET_VAL, dln2 288 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 300 drivers/iio/adc/dln2-adc.c dln2_adc_set_port_enabled(dln2, false, NULL); dln2 302 drivers/iio/adc/dln2-adc.c dln2_adc_set_chan_enabled(dln2, channel, false); dln2 309 drivers/iio/adc/dln2-adc.c static int dln2_adc_read_all(struct dln2_adc *dln2, dln2 313 drivers/iio/adc/dln2-adc.c __u8 port = dln2->port; dln2 316 drivers/iio/adc/dln2-adc.c ret = dln2_transfer(dln2->pdev, DLN2_ADC_CHANNEL_GET_ALL_VAL, dln2 319 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 336 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2 = iio_priv(indio_dev); dln2 340 drivers/iio/adc/dln2-adc.c mutex_lock(&dln2->mutex); dln2 341 drivers/iio/adc/dln2-adc.c ret = dln2_adc_read(dln2, chan->channel); dln2 342 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 360 drivers/iio/adc/dln2-adc.c if (dln2->sample_period) { dln2 361 drivers/iio/adc/dln2-adc.c microhertz = 1000000000 / dln2->sample_period; dln2 384 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2 = iio_priv(indio_dev); dln2 390 drivers/iio/adc/dln2-adc.c mutex_lock(&dln2->mutex); dln2 392 drivers/iio/adc/dln2-adc.c dln2->sample_period = dln2 394 drivers/iio/adc/dln2-adc.c if (dln2->sample_period > 65535) { dln2 395 drivers/iio/adc/dln2-adc.c dln2->sample_period = 65535; dln2 396 drivers/iio/adc/dln2-adc.c dev_warn(&dln2->pdev->dev, dln2 407 drivers/iio/adc/dln2-adc.c if (dln2->trigger_chan != -1) dln2 408 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_chan_period(dln2, dln2 409 drivers/iio/adc/dln2-adc.c dln2->trigger_chan, dln2->sample_period); dln2 413 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 425 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2 = iio_priv(indio_dev); dln2 429 drivers/iio/adc/dln2-adc.c mutex_lock(&dln2->mutex); dln2 432 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_chan_enabled(dln2, i, dln2 436 drivers/iio/adc/dln2-adc.c dln2_adc_set_chan_enabled(dln2, j, false); dln2 437 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 438 drivers/iio/adc/dln2-adc.c dev_err(&dln2->pdev->dev, dln2 444 drivers/iio/adc/dln2-adc.c dln2_adc_update_demux(dln2); dln2 446 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 490 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2 = iio_priv(indio_dev); dln2 494 drivers/iio/adc/dln2-adc.c mutex_lock(&dln2->mutex); dln2 495 drivers/iio/adc/dln2-adc.c ret = dln2_adc_read_all(dln2, &dev_data); dln2 496 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 501 drivers/iio/adc/dln2-adc.c for (i = 0; i < dln2->demux_count; ++i) { dln2 502 drivers/iio/adc/dln2-adc.c t = &dln2->demux[i]; dln2 508 drivers/iio/adc/dln2-adc.c if (dln2->ts_pad_length) dln2 509 drivers/iio/adc/dln2-adc.c memset((void *)data.values + dln2->ts_pad_offset, dln2 510 drivers/iio/adc/dln2-adc.c 0, dln2->ts_pad_length); dln2 523 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2 = iio_priv(indio_dev); dln2 531 drivers/iio/adc/dln2-adc.c mutex_lock(&dln2->mutex); dln2 534 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_port_enabled(dln2, true, &conflict); dln2 536 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 537 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 539 drivers/iio/adc/dln2-adc.c dev_err(&dln2->pdev->dev, dln2 552 drivers/iio/adc/dln2-adc.c dln2->trigger_chan = trigger_chan; dln2 553 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_chan_period(dln2, dln2->trigger_chan, dln2 554 drivers/iio/adc/dln2-adc.c dln2->sample_period); dln2 555 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 557 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 562 drivers/iio/adc/dln2-adc.c dln2->trigger_chan = -1; dln2 563 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 572 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2 = iio_priv(indio_dev); dln2 574 drivers/iio/adc/dln2-adc.c mutex_lock(&dln2->mutex); dln2 577 drivers/iio/adc/dln2-adc.c if (dln2->trigger_chan != -1) { dln2 578 drivers/iio/adc/dln2-adc.c dln2_adc_set_chan_period(dln2, dln2->trigger_chan, 0); dln2 579 drivers/iio/adc/dln2-adc.c dln2->trigger_chan = -1; dln2 583 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_port_enabled(dln2, false, NULL); dln2 585 drivers/iio/adc/dln2-adc.c mutex_unlock(&dln2->mutex); dln2 587 drivers/iio/adc/dln2-adc.c dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__); dln2 605 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2 = iio_priv(indio_dev); dln2 608 drivers/iio/adc/dln2-adc.c iio_trigger_poll(dln2->trig); dln2 614 drivers/iio/adc/dln2-adc.c struct dln2_adc *dln2; dln2 619 drivers/iio/adc/dln2-adc.c indio_dev = devm_iio_device_alloc(dev, sizeof(*dln2)); dln2 625 drivers/iio/adc/dln2-adc.c dln2 = iio_priv(indio_dev); dln2 626 drivers/iio/adc/dln2-adc.c dln2->pdev = pdev; dln2 627 drivers/iio/adc/dln2-adc.c dln2->port = pdata->port; dln2 628 drivers/iio/adc/dln2-adc.c dln2->trigger_chan = -1; dln2 629 drivers/iio/adc/dln2-adc.c mutex_init(&dln2->mutex); dln2 633 drivers/iio/adc/dln2-adc.c ret = dln2_adc_set_port_resolution(dln2); dln2 639 drivers/iio/adc/dln2-adc.c chans = dln2_adc_get_chan_count(dln2); dln2 651 drivers/iio/adc/dln2-adc.c DLN2_ADC_CHAN(dln2->iio_channels[i], i) dln2 652 drivers/iio/adc/dln2-adc.c IIO_CHAN_SOFT_TIMESTAMP_ASSIGN(dln2->iio_channels[i], i); dln2 658 drivers/iio/adc/dln2-adc.c indio_dev->channels = dln2->iio_channels; dln2 662 drivers/iio/adc/dln2-adc.c dln2->trig = devm_iio_trigger_alloc(dev, "%s-dev%d", dln2 664 drivers/iio/adc/dln2-adc.c if (!dln2->trig) { dln2 668 drivers/iio/adc/dln2-adc.c iio_trigger_set_drvdata(dln2->trig, dln2); dln2 669 drivers/iio/adc/dln2-adc.c devm_iio_trigger_register(dev, dln2->trig); dln2 670 drivers/iio/adc/dln2-adc.c iio_trigger_set_immutable(indio_dev, dln2->trig); dln2 128 drivers/mfd/dln2.c struct dln2_dev *dln2 = dev_get_drvdata(pdev->dev.parent); dln2 141 drivers/mfd/dln2.c spin_lock_irqsave(&dln2->event_cb_lock, flags); dln2 143 drivers/mfd/dln2.c list_for_each_entry(i, &dln2->event_cb_list, list) { dln2 151 drivers/mfd/dln2.c list_add_rcu(&entry->list, &dln2->event_cb_list); dln2 153 drivers/mfd/dln2.c spin_unlock_irqrestore(&dln2->event_cb_lock, flags); dln2 164 drivers/mfd/dln2.c struct dln2_dev *dln2 = dev_get_drvdata(pdev->dev.parent); dln2 169 drivers/mfd/dln2.c spin_lock_irqsave(&dln2->event_cb_lock, flags); dln2 171 drivers/mfd/dln2.c list_for_each_entry(i, &dln2->event_cb_list, list) { dln2 179 drivers/mfd/dln2.c spin_unlock_irqrestore(&dln2->event_cb_lock, flags); dln2 193 drivers/mfd/dln2.c static bool dln2_transfer_complete(struct dln2_dev *dln2, struct urb *urb, dln2 196 drivers/mfd/dln2.c struct device *dev = &dln2->interface->dev; dln2 197 drivers/mfd/dln2.c struct dln2_mod_rx_slots *rxs = &dln2->mod_rx_slots[handle]; dln2 222 drivers/mfd/dln2.c static void dln2_run_event_callbacks(struct dln2_dev *dln2, u16 id, u16 echo, dln2 229 drivers/mfd/dln2.c list_for_each_entry_rcu(i, &dln2->event_cb_list, list) { dln2 241 drivers/mfd/dln2.c struct dln2_dev *dln2 = urb->context; dln2 243 drivers/mfd/dln2.c struct device *dev = &dln2->interface->dev; dln2 290 drivers/mfd/dln2.c dln2_run_event_callbacks(dln2, id, echo, data, len); dln2 293 drivers/mfd/dln2.c if (dln2_transfer_complete(dln2, urb, handle, echo)) dln2 328 drivers/mfd/dln2.c static int dln2_send_wait(struct dln2_dev *dln2, u16 handle, u16 cmd, u16 echo, dln2 340 drivers/mfd/dln2.c ret = usb_bulk_msg(dln2->usb_dev, dln2 341 drivers/mfd/dln2.c usb_sndbulkpipe(dln2->usb_dev, dln2->ep_out), dln2 349 drivers/mfd/dln2.c static bool find_free_slot(struct dln2_dev *dln2, u16 handle, int *slot) dln2 354 drivers/mfd/dln2.c if (dln2->disconnect) { dln2 359 drivers/mfd/dln2.c rxs = &dln2->mod_rx_slots[handle]; dln2 377 drivers/mfd/dln2.c static int alloc_rx_slot(struct dln2_dev *dln2, u16 handle) dln2 386 drivers/mfd/dln2.c ret = wait_event_interruptible(dln2->mod_rx_slots[handle].wq, dln2 387 drivers/mfd/dln2.c find_free_slot(dln2, handle, &slot)); dln2 394 drivers/mfd/dln2.c static void free_rx_slot(struct dln2_dev *dln2, u16 handle, int slot) dln2 401 drivers/mfd/dln2.c rxs = &dln2->mod_rx_slots[handle]; dln2 417 drivers/mfd/dln2.c struct device *dev = &dln2->interface->dev; dln2 427 drivers/mfd/dln2.c static int _dln2_transfer(struct dln2_dev *dln2, u16 handle, u16 cmd, dln2 435 drivers/mfd/dln2.c struct device *dev = &dln2->interface->dev; dln2 437 drivers/mfd/dln2.c struct dln2_mod_rx_slots *rxs = &dln2->mod_rx_slots[handle]; dln2 440 drivers/mfd/dln2.c spin_lock(&dln2->disconnect_lock); dln2 441 drivers/mfd/dln2.c if (!dln2->disconnect) dln2 442 drivers/mfd/dln2.c dln2->active_transfers++; dln2 445 drivers/mfd/dln2.c spin_unlock(&dln2->disconnect_lock); dln2 450 drivers/mfd/dln2.c rx_slot = alloc_rx_slot(dln2, handle); dln2 456 drivers/mfd/dln2.c ret = dln2_send_wait(dln2, handle, cmd, rx_slot, obuf, obuf_len); dln2 473 drivers/mfd/dln2.c if (dln2->disconnect) { dln2 503 drivers/mfd/dln2.c free_rx_slot(dln2, handle, rx_slot); dln2 505 drivers/mfd/dln2.c spin_lock(&dln2->disconnect_lock); dln2 506 drivers/mfd/dln2.c dln2->active_transfers--; dln2 507 drivers/mfd/dln2.c spin_unlock(&dln2->disconnect_lock); dln2 508 drivers/mfd/dln2.c if (dln2->disconnect) dln2 509 drivers/mfd/dln2.c wake_up(&dln2->disconnect_wq); dln2 519 drivers/mfd/dln2.c struct dln2_dev *dln2; dln2 522 drivers/mfd/dln2.c dln2 = dev_get_drvdata(pdev->dev.parent); dln2 526 drivers/mfd/dln2.c return _dln2_transfer(dln2, handle, cmd, obuf, obuf_len, ibuf, dln2 531 drivers/mfd/dln2.c static int dln2_check_hw(struct dln2_dev *dln2) dln2 537 drivers/mfd/dln2.c ret = _dln2_transfer(dln2, DLN2_HANDLE_CTRL, CMD_GET_DEVICE_VER, dln2 545 drivers/mfd/dln2.c dev_err(&dln2->interface->dev, "Device ID 0x%x not supported\n", dln2 553 drivers/mfd/dln2.c static int dln2_print_serialno(struct dln2_dev *dln2) dln2 558 drivers/mfd/dln2.c struct device *dev = &dln2->interface->dev; dln2 560 drivers/mfd/dln2.c ret = _dln2_transfer(dln2, DLN2_HANDLE_CTRL, CMD_GET_DEVICE_SN, NULL, 0, dln2 572 drivers/mfd/dln2.c static int dln2_hw_init(struct dln2_dev *dln2) dln2 576 drivers/mfd/dln2.c ret = dln2_check_hw(dln2); dln2 580 drivers/mfd/dln2.c return dln2_print_serialno(dln2); dln2 583 drivers/mfd/dln2.c static void dln2_free_rx_urbs(struct dln2_dev *dln2) dln2 588 drivers/mfd/dln2.c usb_free_urb(dln2->rx_urb[i]); dln2 589 drivers/mfd/dln2.c kfree(dln2->rx_buf[i]); dln2 593 drivers/mfd/dln2.c static void dln2_stop_rx_urbs(struct dln2_dev *dln2) dln2 598 drivers/mfd/dln2.c usb_kill_urb(dln2->rx_urb[i]); dln2 601 drivers/mfd/dln2.c static void dln2_free(struct dln2_dev *dln2) dln2 603 drivers/mfd/dln2.c dln2_free_rx_urbs(dln2); dln2 604 drivers/mfd/dln2.c usb_put_dev(dln2->usb_dev); dln2 605 drivers/mfd/dln2.c kfree(dln2); dln2 608 drivers/mfd/dln2.c static int dln2_setup_rx_urbs(struct dln2_dev *dln2, dln2 615 drivers/mfd/dln2.c dln2->rx_buf[i] = kmalloc(rx_max_size, GFP_KERNEL); dln2 616 drivers/mfd/dln2.c if (!dln2->rx_buf[i]) dln2 619 drivers/mfd/dln2.c dln2->rx_urb[i] = usb_alloc_urb(0, GFP_KERNEL); dln2 620 drivers/mfd/dln2.c if (!dln2->rx_urb[i]) dln2 623 drivers/mfd/dln2.c usb_fill_bulk_urb(dln2->rx_urb[i], dln2->usb_dev, dln2 624 drivers/mfd/dln2.c usb_rcvbulkpipe(dln2->usb_dev, dln2->ep_in), dln2 625 drivers/mfd/dln2.c dln2->rx_buf[i], rx_max_size, dln2_rx, dln2); dln2 631 drivers/mfd/dln2.c static int dln2_start_rx_urbs(struct dln2_dev *dln2, gfp_t gfp) dln2 633 drivers/mfd/dln2.c struct device *dev = &dln2->interface->dev; dln2 638 drivers/mfd/dln2.c ret = usb_submit_urb(dln2->rx_urb[i], gfp); dln2 682 drivers/mfd/dln2.c static void dln2_stop(struct dln2_dev *dln2) dln2 687 drivers/mfd/dln2.c spin_lock(&dln2->disconnect_lock); dln2 688 drivers/mfd/dln2.c dln2->disconnect = true; dln2 689 drivers/mfd/dln2.c spin_unlock(&dln2->disconnect_lock); dln2 693 drivers/mfd/dln2.c struct dln2_mod_rx_slots *rxs = &dln2->mod_rx_slots[i]; dln2 710 drivers/mfd/dln2.c wait_event(dln2->disconnect_wq, !dln2->active_transfers); dln2 712 drivers/mfd/dln2.c dln2_stop_rx_urbs(dln2); dln2 717 drivers/mfd/dln2.c struct dln2_dev *dln2 = usb_get_intfdata(interface); dln2 719 drivers/mfd/dln2.c dln2_stop(dln2); dln2 723 drivers/mfd/dln2.c dln2_free(dln2); dln2 733 drivers/mfd/dln2.c struct dln2_dev *dln2; dln2 748 drivers/mfd/dln2.c dln2 = kzalloc(sizeof(*dln2), GFP_KERNEL); dln2 749 drivers/mfd/dln2.c if (!dln2) dln2 752 drivers/mfd/dln2.c dln2->ep_out = epout->bEndpointAddress; dln2 753 drivers/mfd/dln2.c dln2->ep_in = epin->bEndpointAddress; dln2 754 drivers/mfd/dln2.c dln2->usb_dev = usb_get_dev(interface_to_usbdev(interface)); dln2 755 drivers/mfd/dln2.c dln2->interface = interface; dln2 756 drivers/mfd/dln2.c usb_set_intfdata(interface, dln2); dln2 757 drivers/mfd/dln2.c init_waitqueue_head(&dln2->disconnect_wq); dln2 760 drivers/mfd/dln2.c init_waitqueue_head(&dln2->mod_rx_slots[i].wq); dln2 761 drivers/mfd/dln2.c spin_lock_init(&dln2->mod_rx_slots[i].lock); dln2 763 drivers/mfd/dln2.c init_completion(&dln2->mod_rx_slots[i].slots[j].done); dln2 766 drivers/mfd/dln2.c spin_lock_init(&dln2->event_cb_lock); dln2 767 drivers/mfd/dln2.c spin_lock_init(&dln2->disconnect_lock); dln2 768 drivers/mfd/dln2.c INIT_LIST_HEAD(&dln2->event_cb_list); dln2 770 drivers/mfd/dln2.c ret = dln2_setup_rx_urbs(dln2, hostif); dln2 774 drivers/mfd/dln2.c ret = dln2_start_rx_urbs(dln2, GFP_KERNEL); dln2 778 drivers/mfd/dln2.c ret = dln2_hw_init(dln2); dln2 793 drivers/mfd/dln2.c dln2_stop_rx_urbs(dln2); dln2 796 drivers/mfd/dln2.c dln2_free(dln2); dln2 803 drivers/mfd/dln2.c struct dln2_dev *dln2 = usb_get_intfdata(iface); dln2 805 drivers/mfd/dln2.c dln2_stop(dln2); dln2 812 drivers/mfd/dln2.c struct dln2_dev *dln2 = usb_get_intfdata(iface); dln2 814 drivers/mfd/dln2.c dln2->disconnect = false; dln2 816 drivers/mfd/dln2.c return dln2_start_rx_urbs(dln2, GFP_NOIO); dln2 101 drivers/spi/spi-dln2.c static int dln2_spi_enable(struct dln2_spi *dln2, bool enable) dln2 110 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 120 drivers/spi/spi-dln2.c return dln2_transfer_tx(dln2->pdev, cmd, &tx, len); dln2 131 drivers/spi/spi-dln2.c static int dln2_spi_cs_set(struct dln2_spi *dln2, u8 cs_mask) dln2 138 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 147 drivers/spi/spi-dln2.c return dln2_transfer_tx(dln2->pdev, DLN2_SPI_SET_SS, &tx, sizeof(tx)); dln2 153 drivers/spi/spi-dln2.c static int dln2_spi_cs_set_one(struct dln2_spi *dln2, u8 cs) dln2 155 drivers/spi/spi-dln2.c return dln2_spi_cs_set(dln2, BIT(cs)); dln2 161 drivers/spi/spi-dln2.c static int dln2_spi_cs_enable(struct dln2_spi *dln2, u8 cs_mask, bool enable) dln2 169 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 173 drivers/spi/spi-dln2.c return dln2_transfer_tx(dln2->pdev, cmd, &tx, sizeof(tx)); dln2 176 drivers/spi/spi-dln2.c static int dln2_spi_cs_enable_all(struct dln2_spi *dln2, bool enable) dln2 178 drivers/spi/spi-dln2.c u8 cs_mask = GENMASK(dln2->master->num_chipselect - 1, 0); dln2 180 drivers/spi/spi-dln2.c return dln2_spi_cs_enable(dln2, cs_mask, enable); dln2 183 drivers/spi/spi-dln2.c static int dln2_spi_get_cs_num(struct dln2_spi *dln2, u16 *cs_num) dln2 194 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 195 drivers/spi/spi-dln2.c ret = dln2_transfer(dln2->pdev, DLN2_SPI_GET_SS_COUNT, &tx, sizeof(tx), dln2 204 drivers/spi/spi-dln2.c dev_dbg(&dln2->pdev->dev, "cs_num = %d\n", *cs_num); dln2 209 drivers/spi/spi-dln2.c static int dln2_spi_get_speed(struct dln2_spi *dln2, u16 cmd, u32 *freq) dln2 220 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 222 drivers/spi/spi-dln2.c ret = dln2_transfer(dln2->pdev, cmd, &tx, sizeof(tx), &rx, &rx_len); dln2 236 drivers/spi/spi-dln2.c static int dln2_spi_get_speed_range(struct dln2_spi *dln2, u32 *fmin, u32 *fmax) dln2 240 drivers/spi/spi-dln2.c ret = dln2_spi_get_speed(dln2, DLN2_SPI_GET_MIN_FREQUENCY, fmin); dln2 244 drivers/spi/spi-dln2.c ret = dln2_spi_get_speed(dln2, DLN2_SPI_GET_MAX_FREQUENCY, fmax); dln2 248 drivers/spi/spi-dln2.c dev_dbg(&dln2->pdev->dev, "freq_min = %d, freq_max = %d\n", dln2 258 drivers/spi/spi-dln2.c static int dln2_spi_set_speed(struct dln2_spi *dln2, u32 speed) dln2 270 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 273 drivers/spi/spi-dln2.c ret = dln2_transfer(dln2->pdev, DLN2_SPI_SET_FREQUENCY, &tx, sizeof(tx), dln2 286 drivers/spi/spi-dln2.c static int dln2_spi_set_mode(struct dln2_spi *dln2, u8 mode) dln2 293 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 296 drivers/spi/spi-dln2.c return dln2_transfer_tx(dln2->pdev, DLN2_SPI_SET_MODE, &tx, sizeof(tx)); dln2 302 drivers/spi/spi-dln2.c static int dln2_spi_set_bpw(struct dln2_spi *dln2, u8 bpw) dln2 309 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 312 drivers/spi/spi-dln2.c return dln2_transfer_tx(dln2->pdev, DLN2_SPI_SET_FRAME_SIZE, dln2 316 drivers/spi/spi-dln2.c static int dln2_spi_get_supported_frame_sizes(struct dln2_spi *dln2, dln2 326 drivers/spi/spi-dln2.c } *rx = dln2->buf; dln2 330 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 332 drivers/spi/spi-dln2.c ret = dln2_transfer(dln2->pdev, DLN2_SPI_GET_SUPPORTED_FRAME_SIZES, dln2 345 drivers/spi/spi-dln2.c dev_dbg(&dln2->pdev->dev, "bpw_mask = 0x%X\n", *bpw_mask); dln2 418 drivers/spi/spi-dln2.c static int dln2_spi_write_one(struct dln2_spi *dln2, const u8 *data, dln2 426 drivers/spi/spi-dln2.c } __packed *tx = dln2->buf; dln2 434 drivers/spi/spi-dln2.c tx->port = dln2->port; dln2 438 drivers/spi/spi-dln2.c dln2_spi_copy_to_buf(tx->buf, data, data_len, dln2->bpw); dln2 441 drivers/spi/spi-dln2.c return dln2_transfer_tx(dln2->pdev, DLN2_SPI_WRITE, tx, tx_len); dln2 447 drivers/spi/spi-dln2.c static int dln2_spi_read_one(struct dln2_spi *dln2, u8 *data, dln2 459 drivers/spi/spi-dln2.c } __packed *rx = dln2->buf; dln2 467 drivers/spi/spi-dln2.c tx.port = dln2->port; dln2 471 drivers/spi/spi-dln2.c ret = dln2_transfer(dln2->pdev, DLN2_SPI_READ, &tx, sizeof(tx), dln2 480 drivers/spi/spi-dln2.c dln2_spi_copy_from_buf(data, rx->buf, data_len, dln2->bpw); dln2 488 drivers/spi/spi-dln2.c static int dln2_spi_read_write_one(struct dln2_spi *dln2, const u8 *tx_data, dln2 515 drivers/spi/spi-dln2.c tx = dln2->buf; dln2 516 drivers/spi/spi-dln2.c rx = dln2->buf; dln2 518 drivers/spi/spi-dln2.c tx->port = dln2->port; dln2 522 drivers/spi/spi-dln2.c dln2_spi_copy_to_buf(tx->buf, tx_data, data_len, dln2->bpw); dln2 527 drivers/spi/spi-dln2.c ret = dln2_transfer(dln2->pdev, DLN2_SPI_READ_WRITE, tx, tx_len, dln2 536 drivers/spi/spi-dln2.c dln2_spi_copy_from_buf(rx_data, rx->buf, data_len, dln2->bpw); dln2 545 drivers/spi/spi-dln2.c static int dln2_spi_rdwr(struct dln2_spi *dln2, const u8 *tx_data, dln2 565 drivers/spi/spi-dln2.c ret = dln2_spi_read_write_one(dln2, dln2 570 drivers/spi/spi-dln2.c ret = dln2_spi_write_one(dln2, dln2 574 drivers/spi/spi-dln2.c ret = dln2_spi_read_one(dln2, dln2 594 drivers/spi/spi-dln2.c struct dln2_spi *dln2 = spi_master_get_devdata(master); dln2 597 drivers/spi/spi-dln2.c if (dln2->cs != spi->chip_select) { dln2 598 drivers/spi/spi-dln2.c ret = dln2_spi_cs_set_one(dln2, spi->chip_select); dln2 602 drivers/spi/spi-dln2.c dln2->cs = spi->chip_select; dln2 608 drivers/spi/spi-dln2.c static int dln2_spi_transfer_setup(struct dln2_spi *dln2, u32 speed, dln2 614 drivers/spi/spi-dln2.c bus_setup_change = dln2->speed != speed || dln2->mode != mode || dln2 615 drivers/spi/spi-dln2.c dln2->bpw != bpw; dln2 620 drivers/spi/spi-dln2.c ret = dln2_spi_enable(dln2, false); dln2 624 drivers/spi/spi-dln2.c if (dln2->speed != speed) { dln2 625 drivers/spi/spi-dln2.c ret = dln2_spi_set_speed(dln2, speed); dln2 629 drivers/spi/spi-dln2.c dln2->speed = speed; dln2 632 drivers/spi/spi-dln2.c if (dln2->mode != mode) { dln2 633 drivers/spi/spi-dln2.c ret = dln2_spi_set_mode(dln2, mode & 0x3); dln2 637 drivers/spi/spi-dln2.c dln2->mode = mode; dln2 640 drivers/spi/spi-dln2.c if (dln2->bpw != bpw) { dln2 641 drivers/spi/spi-dln2.c ret = dln2_spi_set_bpw(dln2, bpw); dln2 645 drivers/spi/spi-dln2.c dln2->bpw = bpw; dln2 648 drivers/spi/spi-dln2.c return dln2_spi_enable(dln2, true); dln2 655 drivers/spi/spi-dln2.c struct dln2_spi *dln2 = spi_master_get_devdata(master); dln2 659 drivers/spi/spi-dln2.c status = dln2_spi_transfer_setup(dln2, xfer->speed_hz, dln2 663 drivers/spi/spi-dln2.c dev_err(&dln2->pdev->dev, "Cannot setup transfer\n"); dln2 670 drivers/spi/spi-dln2.c status = dln2_spi_rdwr(dln2, xfer->tx_buf, xfer->rx_buf, dln2 673 drivers/spi/spi-dln2.c dev_err(&dln2->pdev->dev, "write/read failed!\n"); dln2 681 drivers/spi/spi-dln2.c struct dln2_spi *dln2; dln2 686 drivers/spi/spi-dln2.c master = spi_alloc_master(&pdev->dev, sizeof(*dln2)); dln2 692 drivers/spi/spi-dln2.c dln2 = spi_master_get_devdata(master); dln2 694 drivers/spi/spi-dln2.c dln2->buf = devm_kmalloc(&pdev->dev, DLN2_SPI_BUF_SIZE, GFP_KERNEL); dln2 695 drivers/spi/spi-dln2.c if (!dln2->buf) { dln2 700 drivers/spi/spi-dln2.c dln2->master = master; dln2 701 drivers/spi/spi-dln2.c dln2->master->dev.of_node = dev->of_node; dln2 702 drivers/spi/spi-dln2.c dln2->pdev = pdev; dln2 703 drivers/spi/spi-dln2.c dln2->port = pdata->port; dln2 705 drivers/spi/spi-dln2.c dln2->cs = 0xff; dln2 706 drivers/spi/spi-dln2.c dln2->mode = 0xff; dln2 709 drivers/spi/spi-dln2.c ret = dln2_spi_enable(dln2, false); dln2 715 drivers/spi/spi-dln2.c ret = dln2_spi_get_cs_num(dln2, &master->num_chipselect); dln2 721 drivers/spi/spi-dln2.c ret = dln2_spi_get_speed_range(dln2, dln2 729 drivers/spi/spi-dln2.c ret = dln2_spi_get_supported_frame_sizes(dln2, dln2 736 drivers/spi/spi-dln2.c ret = dln2_spi_cs_enable_all(dln2, true); dln2 749 drivers/spi/spi-dln2.c ret = dln2_spi_enable(dln2, true); dln2 773 drivers/spi/spi-dln2.c if (dln2_spi_enable(dln2, false) < 0) dln2 784 drivers/spi/spi-dln2.c struct dln2_spi *dln2 = spi_master_get_devdata(master); dln2 788 drivers/spi/spi-dln2.c if (dln2_spi_enable(dln2, false) < 0) dln2 799 drivers/spi/spi-dln2.c struct dln2_spi *dln2 = spi_master_get_devdata(master); dln2 806 drivers/spi/spi-dln2.c ret = dln2_spi_enable(dln2, false); dln2 815 drivers/spi/spi-dln2.c dln2->cs = 0xff; dln2 816 drivers/spi/spi-dln2.c dln2->speed = 0; dln2 817 drivers/spi/spi-dln2.c dln2->bpw = 0; dln2 818 drivers/spi/spi-dln2.c dln2->mode = 0xff; dln2 827 drivers/spi/spi-dln2.c struct dln2_spi *dln2 = spi_master_get_devdata(master); dln2 830 drivers/spi/spi-dln2.c ret = dln2_spi_cs_enable_all(dln2, true); dln2 834 drivers/spi/spi-dln2.c ret = dln2_spi_enable(dln2, true); dln2 847 drivers/spi/spi-dln2.c struct dln2_spi *dln2 = spi_master_get_devdata(master); dln2 849 drivers/spi/spi-dln2.c return dln2_spi_enable(dln2, false); dln2 855 drivers/spi/spi-dln2.c struct dln2_spi *dln2 = spi_master_get_devdata(master); dln2 857 drivers/spi/spi-dln2.c return dln2_spi_enable(dln2, true);