Re: AMD SB700 SMBus controller driver

2009-08-26 Thread Andriy Gapon
on 26/08/2009 01:27  said the following:
 Could you please forward me the patch to make it work in polling mode ? I'd 
 like to test it as I've been trying to make intpm work with a SB400 (which 
 should be quite the same as yours) but system hangs when I try to force 
 polling mode (didn't have the specs nor all the differences you just 
 presented). And btw, I didn't find any implementation using interrupt 
 neither but I'm ready to test your updated version.

[what charset/encoding was your email?]

Please see:
http://people.freebsd.org/~avg/ga-ma780g-ud3h/intpm.diff

The patch is work-in-progress and is not clean for this reason (style
violations, experimental hacks)

What the patch does:
1. redefine PCI_INTR_SMB_IRQ9 to 2 (bit 1)
2. disable writing to PCIR_INTLINE
3. add PCI id of my hardware
4. attempt to use IRQ mode with interrupt 20 - doesn't work
5. force polling mode - seems to work

-- 
Andriy Gapon
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


AMD SB700 SMBus controller driver

2009-08-25 Thread Andriy Gapon

According to SB700 specifications its SMBus controller is very similar to one in
PIIX4.
The differences that I see so far:

1. Interrupt Line/Interrupt Pin PCI configuration registers (0x3c, 0x3d) do not
specify interrupt number that the controller could use:
 This register specifies which interrupt pin the device issue
 This module does not generate interrupt but contains the
 actual interrupt controller. This register is hardcoded to 0.

2. I2CbusConfig register (0xd2) uses bit #1 to indicate whether SMI or regular
interrupt is used in interrupt mode; PIIX4 uses bit 3.

I couldn't get our intpm driver to work with this hardware by simply adding PCI 
id
and tweaking 0xd2 bits meaning.

I could get it to work by forcing polling mode. It appears that Linux driver for
this HW always uses polling mode, and OpenBSD and NetBSD drivers would use it 
with
this HW too.

I am still trying to get interrupt mode to work.
I set 0xd2 to enable regular interrupt generation (it is set to SMI after boot).
SB700 specifications say at one place that SMB interrupt is connected to INTIN20
pin of IO-APIC in APIC mode. I tried setting up IRQ20 in the driver but no
interrupts are generated. And there are no stray interrupts either.
So I am not sure - either this HW doesn't generate normal interrupts at all, or
they to a different pin, or additional setup is required, or I am doing 
something
wrong.

Anyway, I plan to produce an updated version of intpm driver with possibility of
forced or auto-detected polling mode and support for PCI id of SB700 SMBus
controller and its peculiarities.

-- 
Andriy Gapon
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: AMD SB700 SMBus controller driver

2009-08-25 Thread Aur�lien M�r�
Could you please forward me the patch to make it work in polling mode ? I'd 
like to test it as I've been trying to make intpm work with a SB400 (which 
should be quite the same as yours) but system hangs when I try to force 
polling mode (didn't have the specs nor all the differences you just 
presented). And btw, I didn't find any implementation using interrupt 
neither but I'm ready to test your updated version.

Thanks,
Aurélien


- Original Message - 
From: Andriy Gapon a...@freebsd.org
To: freebsd-a...@freebsd.org; freebsd-hackers@freebsd.org
Sent: Tuesday, August 25, 2009 7:49 PM
Subject: AMD SB700 SMBus controller driver



 According to SB700 specifications its SMBus controller is very similar to 
 one in
 PIIX4.
 The differences that I see so far:

 1. Interrupt Line/Interrupt Pin PCI configuration registers (0x3c, 0x3d) 
 do not
 specify interrupt number that the controller could use:
 This register specifies which interrupt pin the device issue
 This module does not generate interrupt but contains the
 actual interrupt controller. This register is hardcoded to 0.

 2. I2CbusConfig register (0xd2) uses bit #1 to indicate whether SMI or 
 regular
 interrupt is used in interrupt mode; PIIX4 uses bit 3.

 I couldn't get our intpm driver to work with this hardware by simply 
 adding PCI id
 and tweaking 0xd2 bits meaning.

 I could get it to work by forcing polling mode. It appears that Linux 
 driver for
 this HW always uses polling mode, and OpenBSD and NetBSD drivers would use 
 it with
 this HW too.

 I am still trying to get interrupt mode to work.
 I set 0xd2 to enable regular interrupt generation (it is set to SMI after 
 boot).
 SB700 specifications say at one place that SMB interrupt is connected to 
 INTIN20
 pin of IO-APIC in APIC mode. I tried setting up IRQ20 in the driver but no
 interrupts are generated. And there are no stray interrupts either.
 So I am not sure - either this HW doesn't generate normal interrupts at 
 all, or
 they to a different pin, or additional setup is required, or I am doing 
 something
 wrong.

 Anyway, I plan to produce an updated version of intpm driver with 
 possibility of
 forced or auto-detected polling mode and support for PCI id of SB700 SMBus
 controller and its peculiarities.

 -- 
 Andriy Gapon
 ___
 freebsd-hackers@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
 To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org
 


___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org