Hi, dongas wrote: > Dear ALL, > > The ar6000 driver i'm using is from andy-tracking branch in kernel 2.6.29. > When i insmod ar6000 module, the kernel hanged. > After digging into the code, i found that in bmiBufferSend function in bmi.c, > the driver will try to repeatly read the COUNT_DEC register of the > card (The read value is stored in cmdCredits variable), > until the register value read back is Non-zero and then the following > steps can go on. > But the value returned from register was alway zero , so ar6000 driver > hanged there and keeped doing almost the infinit loop > reading&checking. > > Why the driver can not read a non-zero value from COUNT_DEC register > as it wanted? > Can anybody who knows that provide some hints on which case may cause > this issue? > > The following are some output messages: > > /lib/modules # insmod ar6000.ko debughtc=0xffff > [ 13.870000] HTCInit: Enter > [ 13.890000] HIFInit > [ 13.900000] sdio_ar6000 mmc0:0001:1: sdio_ar6000_probe > [ 13.910000] sdio_ar6000 mmc0:0001:1: ar6000_activate > [ 13.940000] sdio_ar6000 mmc0:0001:1: ar6000_do_activate > [ 13.950000] htcTargetInserted - Enter > [ 13.960000] sdio_ar6000 mmc0:0001:1: HIFConfigureDevice > [ 13.960000] sdio_ar6000 mmc0:0001:1: HIFConfigureDevice > [ 13.970000] BlockSize: 128, MailboxAddress:0x800 > [ 13.970000] sdio_ar6000 mmc0:0001:1: HIFConfigureDevice > [ 13.980000] sdio_ar6000 mmc0:0001:1: HIFConfigureDevice > [ 13.990000] HIF Interrupt processing is SYNC ONLY > [ 14.000000] sdio_ar6000 mmc0:0001:1: HIFConfigureDevice > [ 14.000000] HIF special overrides : 0x0 , 0x0 > [ 14.020000] sdio_ar6000 mmc0:0001:1: HIFReadWrite(device c7df4560, > address 0x418, buffer c7dfbc74, length 4, request 0x25a, context > 00000000) > [ 14.030000] sdio_ar6000 mmc0:0001:1: process_request(req c7df4460) > [ 14.050000] calling AddInstance callback > [ 14.050000] ar6000_available > [ 14.060000] BMI Get Target Info: Enter (device: 0xc7df4560) > [ 14.060000] sdio_ar6000 mmc0:0001:1: HIFConfigureDevice > > [ 14.070000] sdio_ar6000 mmc0:0001:1: HIFReadWrite(device c7df4560, > address 0x450, buffer bf027204, length 4, request 0x259, context > 00000000) > [ 14.080000] sdio_ar6000 mmc0:0001:1: process_request(req c7c53be0) > [ 14.110000] kernel DEBUG at drivers/ar6000/bmi/bmi.c: 589 > bmiBufferSend!cmdCredits =0 > > [ 14.120000] sdio_ar6000 mmc0:0001:1: HIFReadWrite(device c7df4560, > address 0x450, buffer bf027204, length 4, request 0x259, context > 00000000) > [ 14.130000] sdio_ar6000 mmc0:0001:1: process_request(req c7c53be0) > [ 14.150000] kernel DEBUG at drivers/ar6000/bmi/bmi.c: 589 > bmiBufferSend!cmdCredits =0 > ………… > The left log repeats above three lines, > ( Looply read the register of COUNT_DEC since the value of cmdCredits > was alway 0). > > Thanks > > Regards > Dongas > > > I will take a look on monday :)
Michael
