retval = pci_enable_device(dev); if (retval) { printk(KERN_ERR "Unable to enable this PCI device\n"); return retval; } else { printk(KERN_INFO "PCI device enabled\n"); } display_pci_config_space(dev); retval = pci_request_regions(dev, "expt_pci"); if (retval) { printk(KERN_ERR "Unable to acquire regions of this PCI device\n"); pci_disable_device(dev); return retval; } else { printk(KERN_INFO "PCI device regions acquired\n"); } if ((dpv->reg_base = ioremap(pci_resource_start(dev, 2), pci_resource_len(dev, 2))) == NULL) { printk(KERN_ERR "Unable to map registers of this PCI device\n"); pci_release_regions(dev); pci_disable_device(dev); return -ENODEV; } printk(KERN_INFO "Register Base: %p\n", dpv->reg_base); printk(KERN_INFO "IRQ: %u\n", dev->irq); printk(KERN_INFO "dpv->reg_base value is: %x\n",dpv->reg_base); pci_set_drvdata(dev, dpv); printk(KERN_INFO "PCI device registered\n"); printk(KERN_INFO "Expt: In write\n"); //iowrite8(MY_BYTE,dev->resource[0].start); uint32_t a = 0x01; uint32_t addr; iowrite8(a, dpv->reg_base); printk("value written is %d\n",a); printk(KERN_INFO "Expt: In read\n"); //addr = ioread8(dev->resource[0].start ); addr = ioread8(dpv->reg_base ); printk("Value read is %d\n",addr); THE OUTPUT i am getting is this: [ 6482.783371] PCI device regions acquired [ 6482.795801] Register Base: ffffc90015b00000 [ 6482.795803] IRQ: 16 [ 6482.795804] dpv->reg_base value is: 15b00000 [ 6482.795805] PCI device registered *[ 6482.795806] Expt: In write[ 6482.795807] value written is 1[ 6482.795808] Expt: In read[ 6482.795810] Value read is 0* [ 6482.795836] Expt PCI driver registered Can you tell me what am i doing wrong? Regards On Tue, Apr 28, 2015 at 10:36 AM, Sudip Mukherjee < sudipm.mukherjee@gmail.com> wrote:
On Tue, Apr 28, 2015 at 10:25 AM, Robert Clove <cloverobert@gmail.com> wrote:
Hi,
I am trying to write and read PCI BAR address but not getting the expected output. I am using the ioremap api to get the address. Any leads will be fruit full.
can you please post what you have tried till now...
regards sudip