• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/char/xilinx_hwicap/

Lines Matching refs:drvdata

198  * @drvdata: a pointer to the drvdata.
204 static int hwicap_command_desync(struct hwicap_drvdata *drvdata)
212 buffer[index++] = hwicap_type_1_write(drvdata->config_regs->CMD) | 1;
221 return drvdata->config->set_configuration(drvdata,
227 * @drvdata: a pointer to the drvdata.
236 static int hwicap_get_configuration_register(struct hwicap_drvdata *drvdata,
256 status = drvdata->config->set_configuration(drvdata,
262 status = drvdata->config->get_status(drvdata);
275 status = drvdata->config->set_configuration(drvdata,
283 status = drvdata->config->get_configuration(drvdata, reg_data, 1);
290 static int hwicap_initialize_hwicap(struct hwicap_drvdata *drvdata)
295 dev_dbg(drvdata->dev, "initializing\n");
299 dev_dbg(drvdata->dev, "Reset...\n");
300 drvdata->config->reset(drvdata);
302 dev_dbg(drvdata->dev, "Desync...\n");
303 status = hwicap_command_desync(drvdata);
311 dev_dbg(drvdata->dev, "Reading IDCODE...\n");
313 drvdata, drvdata->config_regs->IDCODE, &idcode);
314 dev_dbg(drvdata->dev, "IDCODE = %x\n", idcode);
318 dev_dbg(drvdata->dev, "Desync...\n");
319 status = hwicap_command_desync(drvdata);
329 struct hwicap_drvdata *drvdata = file->private_data;
336 status = mutex_lock_interruptible(&drvdata->sem);
340 if (drvdata->read_buffer_in_use) {
345 (count < drvdata->read_buffer_in_use) ? count :
346 drvdata->read_buffer_in_use;
349 if (copy_to_user(buf, drvdata->read_buffer, bytes_to_read)) {
353 drvdata->read_buffer_in_use -= bytes_to_read;
354 memmove(drvdata->read_buffer,
355 drvdata->read_buffer + bytes_to_read,
384 status = drvdata->config->get_configuration(drvdata,
399 memcpy(drvdata->read_buffer,
402 drvdata->read_buffer_in_use = bytes_remaining;
407 mutex_unlock(&drvdata->sem);
415 struct hwicap_drvdata *drvdata = file->private_data;
422 status = mutex_lock_interruptible(&drvdata->sem);
426 left += drvdata->write_buffer_in_use;
449 if (drvdata->write_buffer_in_use) {
450 memcpy(kbuf, drvdata->write_buffer,
451 drvdata->write_buffer_in_use);
453 (((char *)kbuf) + drvdata->write_buffer_in_use),
455 len - (drvdata->write_buffer_in_use))) {
468 status = drvdata->config->set_configuration(drvdata,
476 if (drvdata->write_buffer_in_use) {
477 len -= drvdata->write_buffer_in_use;
478 left -= drvdata->write_buffer_in_use;
479 drvdata->write_buffer_in_use = 0;
485 if (!copy_from_user(drvdata->write_buffer,
487 drvdata->write_buffer_in_use = left;
496 mutex_unlock(&drvdata->sem);
502 struct hwicap_drvdata *drvdata;
506 drvdata = container_of(inode->i_cdev, struct hwicap_drvdata, cdev);
508 status = mutex_lock_interruptible(&drvdata->sem);
512 if (drvdata->is_open) {
517 status = hwicap_initialize_hwicap(drvdata);
519 dev_err(drvdata->dev, "Failed to open file");
523 file->private_data = drvdata;
524 drvdata->write_buffer_in_use = 0;
525 drvdata->read_buffer_in_use = 0;
526 drvdata->is_open = 1;
529 mutex_unlock(&drvdata->sem);
537 struct hwicap_drvdata *drvdata = file->private_data;
541 mutex_lock(&drvdata->sem);
543 if (drvdata->write_buffer_in_use) {
545 for (i = drvdata->write_buffer_in_use; i < 4; i++)
546 drvdata->write_buffer[i] = 0;
548 status = drvdata->config->set_configuration(drvdata,
549 (u32 *) drvdata->write_buffer, 1);
554 status = hwicap_command_desync(drvdata);
559 drvdata->is_open = 0;
560 mutex_unlock(&drvdata->sem);
578 struct hwicap_drvdata *drvdata = NULL;
607 drvdata = kzalloc(sizeof(struct hwicap_drvdata), GFP_KERNEL);
608 if (!drvdata) {
613 dev_set_drvdata(dev, (void *)drvdata);
621 drvdata->mem_start = regs_res->start;
622 drvdata->mem_end = regs_res->end;
623 drvdata->mem_size = regs_res->end - regs_res->start + 1;
625 if (!request_mem_region(drvdata->mem_start,
626 drvdata->mem_size, DRIVER_NAME)) {
633 drvdata->devt = devt;
634 drvdata->dev = dev;
635 drvdata->base_address = ioremap(drvdata->mem_start, drvdata->mem_size);
636 if (!drvdata->base_address) {
641 drvdata->config = config;
642 drvdata->config_regs = config_regs;
644 mutex_init(&drvdata->sem);
645 drvdata->is_open = 0;
648 (unsigned long long) drvdata->mem_start,
649 drvdata->base_address,
650 (unsigned long long) drvdata->mem_size);
652 cdev_init(&drvdata->cdev, &hwicap_fops);
653 drvdata->cdev.owner = THIS_MODULE;
654 retval = cdev_add(&drvdata->cdev, devt, 1);
664 iounmap(drvdata->base_address);
667 release_mem_region(regs_res->start, drvdata->mem_size);
670 kfree(drvdata);
696 struct hwicap_drvdata *drvdata;
698 drvdata = (struct hwicap_drvdata *)dev_get_drvdata(dev);
700 if (!drvdata)
703 device_destroy(icap_class, drvdata->devt);
704 cdev_del(&drvdata->cdev);
705 iounmap(drvdata->base_address);
706 release_mem_region(drvdata->mem_start, drvdata->mem_size);
707 kfree(drvdata);