Hi Jean, Patrick, Rudolf I still have NOT solved the problem that 792 driver for linux-2.6 can NOT work On Ali M1563 chipset(ABit SU-2S motherboard). Do you have any other suggestion on it? I want to solve this problem very much, and need your help. I checked our 792 Windows driver, find that there are several functions used to get SMBus base address: GetSMBusBaseAddr() GetSMBusBaseAddrAli() GetSMBusBaseAddrALiM1563() GetSMBusBaseAddrNew() It seems that the function GetSMBusBaseAddrALiM1563() is for ALi M1563 only, The only difference between GetSMBusBaseAddrALiM1563() and GetSMBusBaseAddrAli() is that: the first one need "bit &" a mask "0xfffc", while the latter need NOT. Does it have something to do with our problem? Since I can not contact the person who wrote the Windows driver now, I paste three functions in this mail, would you like check it for me? If I want to try to add a mask "0xfffc" in Linux driver too, how should I modify the codes? ****************** for your reference ************************ ULONG GetSMBusBaseAddrALiM1563( OUT ULONG *Address, IN ULONG VendorID, IN ULONG DeviceID, IN ULONG RegNo) { //ULONG Address; ULONG Portin = 0xcfc; //config data reg ULONG Portout = 0xcf8; // config address reg ULONG Portdata ; ULONG DeviceVendor; BOOLEAN Found = FALSE; ULONG RegIndex; ULONG FunNo; ULONG DevNo; ULONG BusNo; ULONG ConfigAddr; ULONG ConfigData; DeviceVendor = (DeviceID << 16) | VendorID ; KdPrint( ("DeviceVendor=%8x \n",DeviceVendor)); ///////////////////////auto detect vendor id and device id//// RegIndex = 0; // vendor and device id for (BusNo =0 ; BusNo < 256; BusNo ++) { for (FunNo =0 ; FunNo < 8; FunNo ++) { for (DevNo =0 ; DevNo < 32; DevNo ++) { ConfigAddr = 0x80000000 | RegIndex | (FunNo << 8) | (DevNo << 11) | (BusNo << 16); WRITE_PORT_ULONG( (PULONG)(Portout) , ConfigAddr ); ConfigData = READ_PORT_ULONG( (PULONG)(Portin) ); if ( ConfigData == DeviceVendor ) { Found = TRUE; break; } } if ( Found ) break; } if ( Found ) break; } if ( Found ) { KdPrint( ("FunNo=%4x ,DevNo=%4x, BusNo=%4x \n",FunNo,DevNo,BusNo)); RegIndex = RegNo; ConfigAddr = 0x80000000 | RegIndex | (FunNo << 8) | (DevNo << 11) | (BusNo << 16); WRITE_PORT_ULONG( (PULONG)(Portout) , ConfigAddr ); ConfigData = READ_PORT_ULONG( (PULONG)(Portin) ); *Address = ConfigData & 0xfffc ; /* here !!! */ KdPrint( ("get smbus address Address =%8x \n",*Address)); return 0; } else return -1; } While in GetSMBusBaseAddr() and GetSMBusBaseAddrAli() the mask is: *Address = ConfigData & 0xfffe ; *Address = ConfigData & 0xffff ; Thanks Best Regards Chunhao > -----Original Message----- > From: Jean Delvare [mailto:khali at linux-fr.org] > Sent: 2005??3??11?? 03:41 > To: Patrick Mochel > Cc: PI14 HUANG0; PI10 LHHsu; PI14 DZSHEN; sensors at Stimpy.netroedge.com; PI13 > CFLi > Subject: Re: We will port w83792d.c to linux-2.6 > > Hi Patrick, > > > Note that while not *identical*, the controller shares a lot of > > similarities with the i810 driver. > > I assume i801. > > > In SMB_HST_STS (offset 0), bit 6 is "ISUSE_STS", which reads a 0 the > > first time after the device is reset, then a 1 after that. Seems like > > it can be used to check if the deivce is ready to be used after a > > reset.. > > Thanks for the info. Incidentally it might help me with a problem I have > with the i2c-viapro driver. You would be surprised how many common > points there are between the various SMBus masters found on x86 > motherboards. > > I guess that this bit is read-only? > > According to the source, bit 7 is "DONE". I guess it is read-only as > well, and set after a successful transaction? > > If bit 5 used for anything? > > > It says that it only happens at address 0x58. Is there a device there? > > If there is, perhaps you could try increasing the timeout? > > I would guess that 0x58 is the value of the register, which is 7 bits of > address and 1 bit of R/W. So the device address would rather be 0x44 > (0x58 >> 1). It happens that 0x44 is a special address for SMBus 2.0, if > I am not mistaken. > > I don't know much more, unfortunately. > > Anyway thanks Patrick for the info. > > -- > Jean Delvare ===========================================================================================The privileged confidential information contained in this email is intended for use only by the addressees as indicated by the original author of this email. If you are not the addressee indicated in this email or are not responsible for delivery of the email to such person, please kindly reply the sender indicating accordingly and delete all copies of it from your computer and network server immediately. We thank you for your cooperation. It is advisable that any unauthorized use of confidential information of Winbond is strictly prohibited; and any information in this email that does not relate to the official business of Winbond shall be deemed as neither given nor endorsed by Winbond.===========================================================================================If your computer is unable to decode Chinese font, please ignore the following message. They essentially repea! t the English statement above.???H???????t?????q?l???]???????K?????T, ?????v???o?H?H???w?????H?H???\????. ?????z???D?Q???w?????H?H???]???????]?b???g???v?????????U???????H??, ???z?i?????o?H?H?????Y?N?H???q?q???P???????A???????H????. ?????z???X?@, ?????????P??. ?S??????, ???????g???v?????????????q?l?????K???T???????O?Q?Y???T????. ?H???P?????q?l???~?L???????e,???o?????????q?l?????????N??.