the following code segment seems to give me different answers
under varying mandrake versions and kernel versions
help would be much appreciated.
i've included the output of uname -a and cc -v for each compile
together the output of insmod ./adc.o
apologies for its length
static int adc_count = 0;
int init_module (void)
{
PCI_Device_T *PCI_Device = NULL;
unsigned short VendorID = 0;
unsigned short DeviceID = 0;
unsigned long int subsystem_id = 0;
u32 subsys_id;
// what we're looking for
VendorID = 0x10b5;
DeviceID = 0x9050;
while ( (PCI_Device = pci_find_device( VendorID, DeviceID, PCI_Device)) )
{
subsystem_id = pci_read_config_word( PCI_Device,
(u8)PCI_SUBSYSTEM_ID,
(u32)(&subsys_id) );
printk( KERN_CRIT "class %xH\n", PCI_Device->class);
printk( KERN_CRIT "subsystem_id %xH\n", subsystem_id);
printk( KERN_CRIT "subsys_id %xH\n", subsys_id);
if (subsys_id == 0x0605 ) { /* arcom value from manual */
adc_count++;
printk( KERN_CRIT "Card %d PC-ADADIO\n", adc_count+1);
}
}
//bits removed, {} may not balance
}
helios
[root@work adc]# cc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/pgcc-2.91.66/specs
gcc version pgcc-2.91.66 19990314 (egcs-1.1.2 release)
[root@work adc]# uname -a
Linux work.flat3 2.2.13-22mdk #2 SMP Thu Jan 6 08:42:33 GMT 2000 i686
unknown
[root@work adc]#make all
rm -f *.o *~ core
gcc -D__KERNEL__ -I/usr/src/linux/include -I../include/ -DMODULE -Wall -O2
-c
adc.c -o adc.o
adc.c:84: warning: initialization makes pointer from integer without a cast
adc.c:85: warning: initialization makes pointer from integer without a cast
adc.c:88: warning: initialization makes pointer from integer without a cast
adc.c:90: warning: initialization makes pointer from integer without a cast
adc.c:92: warning: initialization makes pointer from integer without a cast
adc.c: In function nit_module':
adc.c:183: warning: passing arg 3 of ci_read_config_word' makes pointer
from integer without a cast
adc.c:186: warning: unsigned int format, long unsigned int arg (arg 2)
cp ./adc.o /lib/modules
[root@work adc]#
[root@work adc]# insmod ./adc.o
class 68000H
subsystem_id 0H
subsys_id 605H
Card 1 PC-ADADIO
chan 0 64
chan 1 64
chan 2 80
chan 3 64
chan 4 64
chan 5 0
chan 6 0
chan 7 0
chan 8 0
chan 9 0
chan 10 0
chan 11 0
chan 12 672
chan 13 768
chan 14 864
chan 15 2048
class 68000H
subsystem_id 0H
subsys_id 591H
[root@work adc]#
helios using 2.2.14
[root@work adc]# uname -a
Linux work.flat3 2.2.14-13mdk #6 SMP Wed Jan 12 15:46:20 GMT 2000 i686
unknown
[root@work adc]# cc -v
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/pgcc-2.91.66/specs
gcc version pgcc-2.91.66 19990314 (egcs-1.1.2 release)
[root@work adc]#
[root@work adc]# insmod ./adc.o
class 68000H
subsystem_id 0H
subsys_id 605H
Card 1 PC-ADADIO
chan 0 80
chan 1 64
chan 2 64
chan 3 48
chan 4 64
chan 5 0
chan 6 0
chan 7 0
chan 8 0
chan 9 0
chan 10 0
chan 11 16
chan 12 640
chan 13 720
chan 14 816
chan 15 2000
class 68000H
subsystem_id 0H
subsys_id 591H
[root@work adc]#
M7.0b3 using 2.2.13-22mdk
[root@localhost adc]# uname -a
Linux localhost.localdomain 2.2.13-22mdk #6 SMP Wed Jan 12 15:08:37 GMT 2000
i686 unknown
[root@localhost rig]# cc -v
Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux/2.95.2/specs
gcc version 2.95.2 19991024 (release)
[root@localhost rig]#
gcc -D__KERNEL__ -I/usr/src/linux/include -I../include/ -DMODULE -Wall -O2
-c
adc.c -o adc.o
adc.c:84: warning: initialization makes pointer from integer without a cast
adc.c:85: warning: initialization makes pointer from integer without a cast
adc.c:88: warning: initialization makes pointer from integer without a cast
adc.c:90: warning: initialization makes pointer from integer without a cast
adc.c:92: warning: initialization makes pointer from integer without a cast
adc.c: In function nit_module':
adc.c:183: warning: passing arg 3 of ci_read_config_word' makes pointer
from integer without a cast
adc.c:186: warning: unsigned int format, long unsigned int arg (arg 2)
adc.c:187: warning: unsigned int format, pointer arg (arg 2)
cp ./adc.o /lib/modules
class 68000H
subsystem_id 0H
subsys_id c63aff38H
class 68000H
subsystem_id 0H
subsys_id c63aff38H
M7.0b3 2.2.14-13mdk
[root@localhost adc]# uname -a
Linux localhost.localdomain 2.2.14-13mdk #3 SMP Tue Jan 11 09:05:48 GMT 2000
i686 unknown
[root@localhost adc]# cc -v
Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux/2.95.2/specs
gcc version 2.95.2 19991024 (release)
[root@localhost adc]#
[root@localhost adc]# make all
rm -f *.o *~ core
gcc -D__KERNEL__ -I/usr/src/linux/include -I../include/ -DMODULE -Wall -O2
-c
adc.c -o adc.o
adc.c:84: warning: initialization makes pointer from integer without a cast
adc.c:85: warning: initialization makes pointer from integer without a cast
adc.c:88: warning: initialization makes pointer from integer without a cast
adc.c:90: warning: initialization makes pointer from integer without a cast
adc.c:92: warning: initialization makes pointer from integer without a cast
adc.c: In function nit_module':
adc.c:183: warning: passing arg 3 of ci_read_config_word' makes pointer
from integer without a cast
adc.c:186: warning: unsigned int format, long unsigned int arg (arg 2)
cp ./adc.o /lib/modules
[root@localhost adc]#
[root@localhost adc]# insmod ./adc.o
class 68000H
subsystem_id 0H
subsys_id 8050605H
class 68000H
subsystem_id 0H
subsys_id 8050591H
[root@localhost adc]#
values i require are the lower 16bits
could someone please tell me whats going on ?