Lines Matching refs:data

77  * Different from Block Read as it sends data and waits for the slave to
78 * return a value dependent on that data. The protocol is simply a Write Block
82 static int adm1266_pmbus_block_xfer(struct adm1266_data *data, u8 cmd, u8 w_len, u8 *data_w,
85 struct i2c_client *client = data->client;
90 .buf = data->write_buf,
96 .buf = data->read_buf,
104 mutex_lock(&data->buf_mutex);
115 mutex_unlock(&data->buf_mutex);
130 mutex_unlock(&data->buf_mutex);
138 mutex_unlock(&data->buf_mutex);
164 struct adm1266_data *data = gpiochip_get_data(chip);
175 ret = i2c_smbus_read_block_data(data->client, pmbus_cmd, read_buf);
189 struct adm1266_data *data = gpiochip_get_data(chip);
195 ret = i2c_smbus_read_block_data(data->client, ADM1266_GPIO_STATUS, read_buf);
207 ret = i2c_smbus_read_block_data(data->client, ADM1266_PDIO_STATUS, read_buf);
224 struct adm1266_data *data = gpiochip_get_data(chip);
235 ret = adm1266_pmbus_block_xfer(data, ADM1266_GPIO_CONFIG, 1, &write_cmd, read_buf);
258 ret = adm1266_pmbus_block_xfer(data, ADM1266_PDIO_CONFIG, 1, &write_cmd, read_buf);
285 static int adm1266_config_gpio(struct adm1266_data *data)
287 const char *name = dev_name(&data->client->dev);
292 for (i = 0; i < ARRAY_SIZE(data->gpio_names); i++) {
293 gpio_name = devm_kasprintf(&data->client->dev, GFP_KERNEL, "adm1266-%x-%s",
294 data->client->addr, adm1266_names[i]);
298 data->gpio_names[i] = gpio_name;
301 data->gc.label = name;
302 data->gc.parent = &data->client->dev;
303 data->gc.owner = THIS_MODULE;
304 data->gc.can_sleep = true;
305 data->gc.base = -1;
306 data->gc.names = data->gpio_names;
307 data->gc.ngpio = ARRAY_SIZE(data->gpio_names);
308 data->gc.get = adm1266_gpio_get;
309 data->gc.get_multiple = adm1266_gpio_get_multiple;
310 data->gc.dbg_show = adm1266_gpio_dbg_show;
312 ret = devm_gpiochip_add_data(&data->client->dev, &data->gc, data);
314 dev_err(&data->client->dev, "GPIO registering failed (%d)\n", ret);
334 static void adm1266_init_debugfs(struct adm1266_data *data)
338 root = pmbus_get_debugfs_dir(data->client);
342 data->debugfs_dir = debugfs_create_dir(data->client->name, root);
344 debugfs_create_devm_seqfile(&data->client->dev, "sequencer_state", data->debugfs_dir,
348 static int adm1266_nvmem_read_blackbox(struct adm1266_data *data, u8 *read_buff)
355 ret = i2c_smbus_read_block_data(data->client, ADM1266_BLACKBOX_INFO, buf);
365 ret = adm1266_pmbus_block_xfer(data, ADM1266_READ_BLACKBOX, 1, &index, read_buff);
380 struct adm1266_data *data = priv;
383 if (offset + bytes > data->nvmem_config.size)
387 memset(data->dev_mem, 0, data->nvmem_config.size);
389 ret = adm1266_nvmem_read_blackbox(data, data->dev_mem);
391 dev_err(&data->client->dev, "Could not read blackbox!");
396 memcpy(val, data->dev_mem + offset, bytes);
401 static int adm1266_config_nvmem(struct adm1266_data *data)
403 data->nvmem_config.name = dev_name(&data->client->dev);
404 data->nvmem_config.dev = &data->client->dev;
405 data->nvmem_config.root_only = true;
406 data->nvmem_config.read_only = true;
407 data->nvmem_config.owner = THIS_MODULE;
408 data->nvmem_config.reg_read = adm1266_nvmem_read;
409 data->nvmem_config.cells = adm1266_nvmem_cells;
410 data->nvmem_config.ncells = ARRAY_SIZE(adm1266_nvmem_cells);
411 data->nvmem_config.priv = data;
412 data->nvmem_config.stride = 1;
413 data->nvmem_config.word_size = 1;
414 data->nvmem_config.size = adm1266_nvmem_cells[0].bytes;
416 data->dev_mem = devm_kzalloc(&data->client->dev, data->nvmem_config.size, GFP_KERNEL);
417 if (!data->dev_mem)
420 data->nvmem = devm_nvmem_register(&data->client->dev, &data->nvmem_config);
421 if (IS_ERR(data->nvmem)) {
422 dev_err(&data->client->dev, "Could not register nvmem!");
423 return PTR_ERR(data->nvmem);
429 static int adm1266_set_rtc(struct adm1266_data *data)
442 return i2c_smbus_write_block_data(data->client, ADM1266_SET_RTC, sizeof(write_buf),
448 struct adm1266_data *data;
452 data = devm_kzalloc(&client->dev, sizeof(struct adm1266_data), GFP_KERNEL);
453 if (!data)
456 data->client = client;
457 data->info.pages = 17;
458 data->info.format[PSC_VOLTAGE_OUT] = linear;
459 for (i = 0; i < data->info.pages; i++)
460 data->info.func[i] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
463 mutex_init(&data->buf_mutex);
465 ret = adm1266_config_gpio(data);
469 ret = adm1266_set_rtc(data);
473 ret = adm1266_config_nvmem(data);
477 ret = pmbus_do_probe(client, &data->info);
481 adm1266_init_debugfs(data);