P.B.Cheblakov wrote:
> It seems, I had found an incomprehensible code in IXXAT driver when I 
> studied it.
>
>       writeb(0x1, base_addr + CHANNEL_RESET_OFFSET);
>       writeb(0x1, base_addr + CHANNEL_OFFSET + CHANNEL_RESET_OFFSET);
>       udelay(100);
>
>       board->dev[0] = ixxat_pci_add_chan(pdev, base_addr);
>       if (IS_ERR(board->dev[0]))
>               goto failure_iounmap;
>
>       /* Check if second channel is available */
>       if ((readb(base_addr + CHANNEL_OFFSET + REG_MOD) & 0xa1) == 0x21 &&
>           readb(base_addr + CHANNEL_OFFSET + REG_SR) == 0x0c &&
>           readb(base_addr + CHANNEL_OFFSET + REG_IR) == 0xe0) {
>               board->dev[1] = ixxat_pci_add_chan(pdev,
>                               base_addr + CHANNEL_OFFSET);
>               if (IS_ERR(board->dev[1]))
>                       goto failure_unreg_dev0;
>
>               intcsr |= INTCSR_LINTI2;
>       }
>
> As I understand,  the IXXAT driver  put  the SJA1000 into Reset Mode and 
> after that checks states of  some registers with the assumption that the 
> SJA1000 is in Basic Mode. 
> And then it register_sja1000dev by calling ixxat_pci_add_chan. But 
> registering sja1000dev cause switching the SJA1000 into PeliCAN Mode.
> I think this check wouldn't work if we unload and then load the IXXAT 
> driver again because the SJA1000 is in PelicCAN Mode. Is it right?
> _______________________________________________
> Socketcan-core mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/socketcan-core
>   
Or, does

writeb(0x1, base_addr + CHANNEL_OFFSET + CHANNEL_RESET_OFFSET);

bring  the SJA1000 into Basic Mode?


_______________________________________________
Socketcan-core mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/socketcan-core

Reply via email to