This is in fact how its done. The important step is to add the set pci_allow_pseudo_children=1 to the etc/system file, otherwise PCI will not load the information. When I first tried to add device node information to the dot-conf file pci wouldn't read it, but it was not evident why it wouldn't.

Thanks for all you help.

Lou

Jan Setje-Eilers wrote:

You'll want to take a look at the driver.conf(4) man page and translate all the bits of information you previously decorated the node with via boot.rc into your .conf file.

So, something like:

name="ipmi_lpc" parent="/[EMAIL PROTECTED],0" device-type="pci" 
unit-address="1f" ...

You'll also need to tell pci that it's OK to pick up .conf enumerated
nodes. You can do this by setting pci_allow_pseudo_children to 1 in
etc/system. Just add a line line this:

set pci_allow_pseudo_children=1

To etc/system.

Please let us know this goes for you.

-jan

I have tried this too, but when you try and map the registers with the ddi_regs_map_setup() there's nothing to map and the call fails. There is also the secondary problem of writing to the 6300ESB register space so that LPC configuration can provide access to the IO space.

Lou

Artem Kachitchkine wrote:

Instead of creating a node, you could install your driver as a pseudo driver, by creating a /kernel/drv/ipmi_lpc.conf (or whatever's you driver name) file containing the line:

name="ipmi_lpc" parent="pseudo" instance=0;

The system will load the driver even if there isn't a hardware node for it. Then access any I/O address you like, considering that *you know* that no other driver on the system accesses (or at least doesn't write or read-with-side-effect) this same address.

-Artem.

Louis Gagne wrote:

I have implemented a character driver under X86 based Solaris 10 release 3/05 that interfaces with a device on the ISA/LPC interface using Intels 6300ESB I/O controller Hub. This device is not defined by the system BIOS at boot time, so we had to do this manually by modifying the boot startup script in boot/solaris/boot.rc to create a device node and open up the relevant address space we needed to access our device. We have a package that installs all the necessary pieces for the new driver and this has worked just fine under the 3/05 version of Solaris 10.

It does not work under X86 based Solaris 10 Update 1 - which is what our customer is using.

The driver itself is very simple and only accesses 3 bytes in LPC space.

The relevant changes in boot.rc made to allow access to this space are shown below. I have tried to add these changes to bootenv.rc, but /usr/sbin/eeprom generates error messages on the mknod, cd and setbinprop lines. Does anyone have any suggestions on what I might try? Lou

# Set node for IPMI LPC SMIC interface space in PCI IO space.
mknod /[EMAIL PROTECTED],0/ipmi_lpc
cd /[EMAIL PROTECTED],0/ipmi_lpc
setprop device-type pci
setprop name "ipmi_lpc"
setprop unit-address 0x1f
setbinprop assigned-addresses 0x0000f800,0x0,0x0,0x0,0x0,0x8100f8ec,0x0,0x00000ca0,0x0,0x00000010 setbinprop device-id 0x25a1
setbinprop vendor-id 0x8086
setbinprop class-code 0x060100
setbinprop reg 0x0000f800,0,0,0,0,0x0100F8EC,0x0,0x00000000,0x00000000,0x00000010
This message posted from opensolaris.org
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

--
Louis R. Gagne
Momentum Computer Inc.
1815 Aston Ave.  Suite 107
Carlsbad, CA 92008
(760) 431-8663  X-104
(760) 431-7571 (FAX)
[EMAIL PROTECTED]

_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org




--
Louis R. Gagne
Momentum Computer Inc.
1815 Aston Ave.  Suite 107
Carlsbad, CA 92008
(760) 431-8663  X-104
(760) 431-7571 (FAX)
[EMAIL PROTECTED]

_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to