Modules/UDI - Minor tweaks
authorJohn Hodge <[email protected]>
Sat, 5 Oct 2013 09:21:19 +0000 (17:21 +0800)
committerJohn Hodge <[email protected]>
Sat, 5 Oct 2013 09:21:19 +0000 (17:21 +0800)
KernelLand/Modules/Interfaces/UDI/include/udi_physio.h
KernelLand/Modules/Interfaces/UDI/trans/bus_pci.c
KernelLand/Modules/Interfaces/UDI/udi_lib/physio/pio.c

index 74fd34c..f5c3ab1 100644 (file)
@@ -6,6 +6,10 @@
 
 #include <udi.h>
 
+//#ifndef UDI_PHYSIO_VERSION
+//# error "UDI_PHYSIO_VERSION must be defined"
+//#endif
+
 // === TYPEDEFS ===
 // DMA Core
 typedef _udi_handle_t  udi_dma_handle_t;
index 0dac0c2..32f2eea 100644 (file)
@@ -7,6 +7,7 @@
  */
 #include <udi.h>
 #include <udi_physio.h>
+#include <udi_pci.h>
 #include <acess.h>
 #include <drv_pci.h>   // acess
 
@@ -103,7 +104,16 @@ void pci_enumerate_req(udi_enumerate_cb_t *cb, udi_ubit8_t enumeration_level)
                        Uint16  ven, dev;
                        Uint32  class;
                        PCI_GetDeviceInfo(rdata->cur_iter, &ven, &dev, &class);
-
+                       Uint8   revision;
+                       PCI_GetDeviceVersion(rdata->cur_iter, &revision);
+                       Uint16  sven, sdev;
+                       PCI_GetDeviceSubsys(rdata->cur_iter, &sven, &sdev);
+
+                       udi_strcpy(attr_list->attr_name, "identifier");
+                       attr_list->attr_length = snprintf(attr_list->attr_value,
+                               "%04x%04x%02x%04x%04x",
+                               ven, dev, revision, sven, sdev);
+                       attr_list ++;
                        DPT_SET_ATTR_STRING(attr_list, "bus_type", "pci", 3);
                        attr_list ++;
                        DPT_SET_ATTR32(attr_list, "pci_vendor_id", ven);
@@ -133,6 +143,8 @@ void pci_bridge_ch_event_ind(udi_channel_event_cb_t *cb)
 }
 void pci_bind_req(udi_bus_bind_cb_t *cb)
 {
+       // TODO: "Lock" PCI device
+
        // TODO: DMA constraints
        udi_bus_bind_ack(cb, 0, UDI_DMA_LITTLE_ENDIAN, UDI_OK);
 }
index a482590..b70861b 100644 (file)
@@ -24,7 +24,7 @@ void udi_pio_map(udi_pio_map_call_t *callback, udi_cb_t *gcb,
        udi_instance_attr_type_t        type;
        type = udi_instance_attr_get_internal(gcb, "bus_type", 0, bus_type, sizeof(bus_type), NULL);
        if(type != UDI_ATTR_STRING) {
-               callback(gcb, UDI_NULL_HANDLE);
+               callback(gcb, UDI_NULL_PIO_HANDLE);
                return ;
        }
        
@@ -33,7 +33,7 @@ void udi_pio_map(udi_pio_map_call_t *callback, udi_cb_t *gcb,
        }
        else {
                // Oops, unknown
-               callback(gcb, UDI_NULL_HANDLE);
+               callback(gcb, UDI_NULL_PIO_HANDLE);
                return ;
        }
 }

UCC git Repository :: git.ucc.asn.au