XXX Look for "XXX" for my commentary. Exception handling initialization done ----------------------------------------- Welcome to rtems-4.6.99.1(PowerPC/PowerPC 7455/mvme5500) on MVME5500-0163 ----------------------------------------- Now BSP_mem_size = 0x1FE00000 BSP_Configuration.work_space_size = 80000 Marvell GT6426xA/B hostbridge detected at PCI0 bus0 slot0 PCI0_BASE_ADDRESS_0 0x8 PCI0_BASE_ADDRESS_1 0x10000008 PCI0_BASE_ADDRESS_2 0x8 PCI0_BASE_ADDRESS_3 0x8 PCI0_INTERRUPT_LINE 0x100 PCI0_MEM_BASE_ADDR 0x80100008 PCI0_IO_BASE_ADDR 0x1 PCI0 Slot 0x0 HEADER/LAT/CACHE 0x80800000 PCI0 Slot 0x0 Func 1 classID 0x5800020 PCI0 Slot 0x0 Func 2 classID 0x5800020 PCI0 Slot 0x0 Func 3 classID 0x5800020 PCI0 Slot 0x0 Func 4 classID 0x5800020 PCI0 Slot 0x0 Func 5 classID 0x5800020 PCI0 Slot 0x0 Func 6 classID 0x5800020 PCI0 Slot 0x0 Func 7 classID 0x5800020 MOTLoad command status 0x22B00006, Now command/status 0x2B00007 PCI0 Bus0 Slot6 DeviceID 0x445716D5 PCI0_BASE_ADDRESS_0 0x80200000 PCI0_BASE_ADDRESS_1 0x0 PCI0_BASE_ADDRESS_2 0x0 PCI0_BASE_ADDRESS_3 0x0 PCI0_INTERRUPT_LINE 0x108 PCI0_MEM_BASE_ADDR 0x0 PCI0_IO_BASE_ADDR 0x0 PCI0 Slot 0x6 HEADER/LAT/CACHE 0x0 MOTLoad command status 0x4000002, Now command/status 0x4000003 PLX PCI6154 PCI-PCI bridge detected at PCI0 bus0 slot10 PCI0_BASE_ADDRESS_0 0x0 PCI0_BASE_ADDRESS_1 0x0 PCI0_BASE_ADDRESS_2 0x80020100 PCI0_BASE_ADDRESS_3 0x2A0C191 PCI0_INTERRUPT_LINE 0x0 PCI0_MEM_BASE_ADDR 0xB5F08200 PCI0_IO_BASE_ADDR 0x1FFF1 PCI0 Slot 0xA HEADER/LAT/CACHE 0x18008 MOTLoad command status 0x2B00087, Now command/status 0x2B00087 TUNDRA PCI-VME bridge detected at PCI0 bus1 slot0 PCI0_BASE_ADDRESS_0 0x82000000 PCI0_BASE_ADDRESS_1 0x9001 PCI0_BASE_ADDRESS_2 0x0 PCI0_BASE_ADDRESS_3 0x0 PCI0_INTERRUPT_LINE 0x10C PCI0_MEM_BASE_ADDR 0x0 PCI0_IO_BASE_ADDR 0x0 PCI0 Slot 0x0 HEADER/LAT/CACHE 0x8000 MOTLoad command status 0x2000007, Now command/status 0x2000007 XXX XXX Found DEC bridge: DEC 21150 PCI-PCI bridge detected at PCI0 bus1 slot4 PCI0_BASE_ADDRESS_0 0x0 PCI0_BASE_ADDRESS_1 0x0 PCI0_BASE_ADDRESS_2 0x80020201 PCI0_BASE_ADDRESS_3 0x2280C1B1 PCI0_INTERRUPT_LINE 0x0 PCI0_MEM_BASE_ADDR 0xB5F0B400 PCI0_IO_BASE_ADDR 0x1FFF1 PCI0 Slot 0x4 HEADER/LAT/CACHE 0x18008 MOTLoad command status 0x2900007, Now command/status 0x2900007 Marvell GT6426xA/B hostbridge detected at PCI1 bus0 slot0 PCI1_BASE_ADDRESS_0 0x8 PCI1_BASE_ADDRESS_1 0x10000008 PCI1_BASE_ADDRESS_2 0x8 PCI1_BASE_ADDRESS_3 0x8 PCI1_INTERRUPT_LINE 0x100 PCI1_MEM_BASE_ADDR 0xE1000008 PCI1_IO_BASE_ADDR 0x1 PCI1 Slot 0x0 HEADER/LAT/CACHE 0x80800000 PCI1 Slot 0x0 Func 1 classID 0x5800020 PCI1 Slot 0x0 Func 2 classID 0x5800020 PCI1 Slot 0x0 Func 3 classID 0x5800020 PCI1 Slot 0x0 Func 4 classID 0x5800020 PCI1 Slot 0x0 Func 5 classID 0x5800020 PCI1 Slot 0x0 Func 6 classID 0x5800020 PCI1 Slot 0x0 Func 7 classID 0x5800020 MOTLoad command status 0x22B00006, Now command/status 0x2B00007 PCI1 Bus0 Slot6 DeviceID 0x4D4D16D5 PCI1_BASE_ADDRESS_0 0xE1100000 PCI1_BASE_ADDRESS_1 0x0 PCI1_BASE_ADDRESS_2 0x0 PCI1_BASE_ADDRESS_3 0x0 PCI1_INTERRUPT_LINE 0x110 PCI1_MEM_BASE_ADDR 0x0 PCI1_IO_BASE_ADDR 0x0 PCI1 Slot 0x6 HEADER/LAT/CACHE 0x8008 MOTLoad command status 0x4000006, Now command/status 0x4000007 INTEL 82544EI COPPER network controller detected at PCI1 bus0 slot10 PCI1_BASE_ADDRESS_0 0xE1120000 PCI1_BASE_ADDRESS_1 0xE1140000 PCI1_BASE_ADDRESS_2 0x10001 PCI1_BASE_ADDRESS_3 0x0 PCI1_INTERRUPT_LINE 0x114 PCI1_MEM_BASE_ADDR 0x0 PCI1_IO_BASE_ADDR 0x0 PCI1 Slot 0xA HEADER/LAT/CACHE 0x8008 MOTLoad command status 0x2300007, Now command/status 0x2300007 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7 BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0 BSP_PCIxFindDevice: found 0x00263388 at 0/0/10/0 BSP_PCIxFindDevice: found 0x000010E3 at 0/1/0/0 Universe II PCI-VME bridge detected at 0x82000000, IRQ 12 Universe Master Ports: Port VME-Addr Size PCI-Adrs Mode: 0: 0x20000000 0x0F000000 0x90000000 A32, Dat, Sup 1: 0x00000000 0x00FF0000 0x9F000000 A24, Dat, Sup 2: 0x00000000 0x00010000 0x9FFF0000 A16, Dat, Sup Universe Slave Ports: Port VME-Addr Size PCI-Adrs Mode: 0: 0x90000000 0x1FE00000 0x00000000 A32, Pgm, Dat, Sup, Usr Overriding main IRQ line PCI info with 12 Registering /dev/console as minor 0 (==/dev/ttyS0) XXX XXX Now my code starts, adding my driver. The NULL softc XXX is just my code allocating a major number. XXX XXX First PMC730 finds itself at 0/0/6/0 Adding PMC730 minor number 0. pmc_init: Called with NULL softc, returning. BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7 BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0 pmc730_0@0x01FFEE38: 0/0/6/0 base address 80200000 intr 08. XXX Second PMC730 (other side of bridge) thinks it is at 0/2/2/0 XXX but that interrupt looks bogus. Adding PMC730 minor number 1. BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7 BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0 BSP_PCIxFindDevice: found 0x00263388 at 0/0/10/0 BSP_PCIxFindDevice: found 0x000010E3 at 0/1/0/0 BSP_PCIxFindDevice: found 0x00221011 at 0/1/4/0 BSP_PCIxFindDevice: found 0x445716D5 at 0/2/2/0 pmc730_1@0x01FFED68: 0/2/2/0 base address B4000000 intr 0E. XXX PMC341 finds itself at 1/0/6/0. Adding PMC341 minor number 0. pmc_init: Called with NULL softc, returning. BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/0 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/1 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/2 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/3 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/4 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/5 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/6 BSP_PCIxFindDevice: found 0x643011AB at 0/0/0/7 BSP_PCIxFindDevice: found 0x445716D5 at 0/0/6/0 BSP_PCIxFindDevice: found 0x00263388 at 0/0/10/0 BSP_PCIxFindDevice: found 0x000010E3 at 0/1/0/0 BSP_PCIxFindDevice: found 0x00221011 at 0/1/4/0 BSP_PCIxFindDevice: found 0x445716D5 at 0/2/2/0 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/0 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/1 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/2 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/3 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/4 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/5 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/6 BSP_PCIxFindDevice: found 0x643011AB at 1/0/0/7 BSP_PCIxFindDevice: found 0x4D4D16D5 at 1/0/6/0 pmc341_0@0x01FFEC80: 1/0/6/0 base address E1100000 intr 10. Type 'cexp.help()' for help (no quotes) XXX Now I try to generate an interrupt on the PMC730. cexp_main>b=0x1ffee38 # Get first pmc730 pointer 0x01ffee38 (33549880) cexp_main>pmc_dump(b) pmc730_0@0x01ffee38 0 intr: 00000000 1 adc_ctl_stat: 00000000 2 adc_start_end: 00000000 3 adc_cvt_timer_and_prescaler: 00000000 4 adc_memory_threshhold: 000001ff 5 adc_start: 00000000 6 unused0: 00000000 7 unused1: 00000000 8 dac_ctl_stat: 00000000 9 dac_conversion_timer: 00000000 10 dac_fifo_interrupt_threshhold: 00000000 11 dac_start: 00000000 12 dac_fifo_write_port: 00000000 13 unused2: 00000000 14 dio_reg: 0000ffff 15 dio_dir: 00000000 16 dio_status_and_enable: 00000000 17 dio_polarity_and_type: 00000000 18 dio_debounce_0_7: 00000000 19 dio_debounce_8_15: 00000000 20 ctr_ctl: 00000000 21 ctr_readback: 00000000 22 ctr_constant1: 00000000 23 ctr_constant2: 00000000 24 ctr_trig: 00000000 25 cal_access: 00000000 26 cal_read_and_status: 00000000 27 cal_write_enable: 00000000 0x01ffee38 (33549880) XXX This enables counter interrupts and puts counter in XXX watchdog mode, loads the watchdog with 0x400, and XXX enables board interrupts. cexp_main>pmc_o(b,20,0x103,22,0x400,0,1,-1) 0x01ffee38 (33549880) XXX The interrupts are enabled, and the counter XXX is preloaded with 0x400. cexp_main>pmc_d(b,0,20,21,-1) 0 intr: 00000001 20 ctr_ctl: 00000103 21 ctr_readback: 00000400 0x01ffee38 (33549880) XXX Now start the counter: cexp_main>pmc_o(b,24,1,-1) 0x01ffee38 (33549880) XXX And read back and see there is an interrupt pending XXX (register 0 0x2), the cause is the counter XXX (register 20 0x1000), and the counter has gone down to 0. cexp_main>pmc_d(b,0,20,21,-1) 0 intr: 00000003 20 ctr_ctl: 00001103 21 ctr_readback: 00000000 0x01ffee38 (33549880) XXX But no interrupt. cexp_main>