Address configuration for scx200_acb

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thomas Andrews wrote:
> On Thu, Apr 27, 2006 at 11:41:14PM +0200, Jean Delvare wrote:
>
>   
>> Can you please comment on this?
>> http://bugzilla.kernel.org/show_bug.cgi?id=6445#c15
>>
>> This is a propsal to make the scx200_acb driver's default base
>> addresses configurable through Kconfig. What do you think?
>>
>> Another possibility would be to detect them at runtime depending on
>> some platform data. Sounds more complex, if possible at all.
>>
>> Or we can stick to the current state (default addresses, can be
>> overriden with module parameters).
>>
>> What makes the current default addresses (0x820 and 0x840) more
>> legitimate than what Alexander has (0x810 and 0x820)?
>>     
>
> I've been wondering about this myself. I also use the wrap boards, and
> I've found that the address can be automatically set using something
> like this:
>
> static void detect_acb_base_addresses(int *acb1, int* acb2)
> {
>     unsigned char h1 = 0;
>     unsigned char l1 = 0;
>     unsigned char h2 = 0;
>     unsigned char l2 = 0;
>
>     /* Select ACB1  (LDN 5) */
>     outb(0x07,CFG_INDEX);
>     outb(0x05,CFG_DATA);
>     outb(0x60,CFG_INDEX);
>     h1 = inb(CFG_DATA);
>     outb(0x61,CFG_INDEX);
>     l1 = inb(CFG_DATA);
>
>     /* ACB2 (LDN 6) */
>     outb(0x07,CFG_INDEX);
>     outb(0x06,CFG_DATA);
>     outb(0x60,CFG_INDEX);
>     h2 = inb(CFG_DATA);
>     outb(0x61,CFG_INDEX);
>     l2 = inb(CFG_DATA);
>     *acb1 = (h1 << 8) | l1;
>     *acb2 = (h2 << 8) | l2;    
>     DEBUG(1,printk("ACB1 at %x, ACB2 at %x",*acb1,*acb2));
> }
>
> Would this not work for the whole family ?
>
> Regards,
> Thomas
>   

I have a soekris net4801 which has the same sc-1100.
On my board, ISA addys 2e, 2f talk to a separate Super-IO chip, pc87360.
which IIRC has an acb unit also.
Back when I got the board, the presence of 2 superio devices was somewhat
confusing, until Id read both datasheets - 2x.

FWIW, the pc87360 has these (from a pre-proto-patch I still have)

+char* funcblocks[] = {
+       "Floppy Disk Controller (FDC)",
+       "Parallel Port (PP)",
+       "Serial Port 2 with IR (SP2)",
+       "Serial Port 1 (SP1)",
+       "System Wake-Up Control (SWC)",
+       "Keyboard and Mouse Controller (KBC) - Mouse interface",
+       "Keyboard and Mouse Controller (KBC) - Keyboard interface",
+       "General-Purpose I/O (GPIO) Ports",
+       "ACCESS.bus Interface (ACB)",
+       "Fan Speed Control and Monitor (FSCM)",
+       "WATCHDOG Timer (WDT)",
+       "Game Port (GMP)",
+       "Musical Instrument Digital Interface (MIDI) Port",
+       "Voltage Level Monitor (VLM)",
+       "Temperature Sensor (TMS)",
+       NULL
+};
+
+
+struct pc87366_unit pc87366_units[] = {
+       { 8,    "Floppy Disk Controller (FDC)" },
+       { 0x10, "Parallel Port (PP)" },
+       { 8, "Serial Port 2 with IR (SP2)" },
+       { 8, "Serial Port 1 (SP1)" },
+       { 0x10, "System Wake-Up Control (SWC)" },
+       { 0x10, "Keyboard and Mouse Controller (KBC) - Mouse interface" },
+       { 0x10, "Keyboard and Mouse Controller (KBC) - Keyboard 
interface" },
+       { 0x0c, "General-Purpose I/O (GPIO) Ports" },
+       { 6,    "ACCESS.bus Interface (ACB)" },
+       { 0,    "Fan Speed Control and Monitor (FSCM)" },
+       { 4,    "WATCHDOG Timer (WDT)" },
+       { 0x0d, "Game Port (GMP)" },
+       { 3,    "Musical Instrument Digital Interface (MIDI) Port" },
+       { 0x10, "Voltage Level Monitor (VLM)" },
+       { 0x0f, "Temperature Sensor (TMS)" },
+       { 0,    NULL }
+};


the sc-1100 has fewer functional units; I dimly recall poking at them 
this same way,
but I cant dig up any old bones.




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux