problème sur un driver ! [LINUX] - C++ - Programmation
Marsh Posté le 23-05-2002 à 08:16:56
j'ai oublié de préciser que c'etait un driver de type char
Marsh Posté le 24-05-2002 à 08:10:40
non bon alors fallai viré le request_mem_region et l'accès se fait non pas en déréférencant le pointeur mais avec les fonctions writeb , writel, ...
voila tout marche !
Marsh Posté le 22-05-2002 à 18:27:42
voila , c pour une carte pci sur proc x86(cyrix) avec un noyau 2.4.
voici une partie du code :
int pci_das4020_init()
{
unsigned long ret;
unsigned char *gt;
if ((pci_das_major=register_chrdev(pci_das_major, pci_das_module_name, &pci_das_fops))<0)
{
printk("Ne peut avoir un major\n" );
return -EBUSY;
}else
printk("major=%d\n", pci_das_major);
if (!pci_present())
{
printk("l'ordinateut n'a pas de pci\n" );
return -EBUSY;
}
if ((pci_das_dev=pci_find_device(4871, 82, NULL))==NULL)
{
printk("carte non trouvée\n" );
return -EBUSY;
}
ret=pci_resource_flags(pci_das_dev, 2);
if (ret!=IORESOURCE_IO && ret!=IORESOURCE_MEM)
{
printk ("impossible d'obtenire la zone bar2\n" );
return -EBUSY;
}
/* obtenire les adresses hw */
pci_das_hwadd2s=pci_resource_start(pci_das_dev, 2);
pci_das_hwadd2e=pci_resource_end(pci_das_dev, 2);
if (check_mem_region(pci_das_hwadd2s, pci_das_hwadd2e-pci_das_hwadd2s))
{
printk("zone mémoire base 2 déjà utilisée\n" );
return -EBUSY;
}
request_mem_region(pci_das_hwadd2s, pci_das_hwadd2e-pci_das_hwadd2s, "pci-das4020/12" );
gt=ioremap(pci_das_hwadd2s, pci_das_hwadd2e-pci_das_hwadd2s);
*(gt+0x4E)=0;
*(gt+0x48)=0;
return 0;
}
toutes les fonctions on l'air de fonctionné, néamoins il ne se passe rien sur ma carte, aurai-je oublié kkchose ?