Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/include/ddf/driver.h

    r56fd7cf r77a69ea  
    4242#include "../dev_iface.h"
    4343
     44typedef struct ddf_dev ddf_dev_t;
     45typedef struct ddf_fun ddf_fun_t;
    4446
    4547/*
    4648 * Device
    4749 */
    48 
    49 typedef struct ddf_dev ddf_dev_t;
    50 typedef struct ddf_fun ddf_fun_t;
    5150
    5251/** Devices operations */
     
    7675
    7776/** Device structure */
    78 struct ddf_dev;
     77struct ddf_dev {
     78        /**
     79         * Globally unique device identifier (assigned to the device by the
     80         * device manager).
     81         */
     82        devman_handle_t handle;
     83        /** Reference count */
     84        atomic_t refcnt;
     85       
     86        /**
     87         * Session to the parent device driver (if it is different from this
     88         * driver)
     89         */
     90        async_sess_t *parent_sess;
     91       
     92        /** Device name */
     93        const char *name;
     94       
     95        /** Driver-specific data associated with this device */
     96        void *driver_data;
     97       
     98        /** Link in the list of devices handled by the driver */
     99        link_t link;
     100};
    79101
    80102/** Function structure */
    81 struct ddf_fun;
     103struct ddf_fun {
     104        /** True if bound to the device manager */
     105        bool bound;
     106        /** Function indentifier (asigned by device manager) */
     107        devman_handle_t handle;
     108        /** Reference count */
     109        atomic_t refcnt;
     110       
     111        /** Device which this function belogs to */
     112        ddf_dev_t *dev;
     113       
     114        /** Function type */
     115        fun_type_t ftype;
     116        /** Function name */
     117        const char *name;
     118        /** List of device ids for driver matching */
     119        match_id_list_t match_ids;
     120        /** Driver-specific data associated with this function */
     121        void *driver_data;
     122        /** Implementation of operations provided by this function */
     123        ddf_dev_ops_t *ops;
     124        /** Connection handler or @c NULL to use the DDF default handler. */
     125        async_client_conn_t conn_handler;
     126       
     127        /** Link in the list of functions handled by the driver */
     128        link_t link;
     129};
    82130
    83131/*
     
    89137        /** Callback method for passing a new device to the device driver */
    90138        int (*dev_add)(ddf_dev_t *);
    91        
    92139        /** Ask driver to remove a device */
    93140        int (*dev_remove)(ddf_dev_t *);
    94        
    95141        /** Inform driver a device disappeared */
    96142        int (*dev_gone)(ddf_dev_t *);
    97        
    98143        /** Ask driver to online a specific function */
    99144        int (*fun_online)(ddf_fun_t *);
    100        
    101145        /** Ask driver to offline a specific function */
    102146        int (*fun_offline)(ddf_fun_t *);
     
    111155} driver_t;
    112156
    113 /** XXX Only to transition USB */
    114 #ifdef _DDF_DATA_IMPLANT
    115 extern void ddf_fun_data_implant(ddf_fun_t *, void *);
    116 #endif
    117 
    118157extern int ddf_driver_main(driver_t *);
    119158
    120159extern void *ddf_dev_data_alloc(ddf_dev_t *, size_t);
    121 extern void *ddf_dev_data_get(ddf_dev_t *);
    122 extern devman_handle_t ddf_dev_get_handle(ddf_dev_t *);
    123 extern const char *ddf_dev_get_name(ddf_dev_t *);
    124 extern async_sess_t *ddf_dev_parent_sess_create(ddf_dev_t *, exch_mgmt_t);
    125 extern async_sess_t *ddf_dev_parent_sess_get(ddf_dev_t *);
    126160extern ddf_fun_t *ddf_fun_create(ddf_dev_t *, fun_type_t, const char *);
    127 extern devman_handle_t ddf_fun_get_handle(ddf_fun_t *);
    128161extern void ddf_fun_destroy(ddf_fun_t *);
    129162extern void *ddf_fun_data_alloc(ddf_fun_t *, size_t);
    130 extern void *ddf_fun_data_get(ddf_fun_t *);
    131 extern const char *ddf_fun_get_name(ddf_fun_t *);
    132 extern int ddf_fun_set_name(ddf_fun_t *, const char *);
    133 extern ddf_dev_t *ddf_fun_get_dev(ddf_fun_t *);
    134163extern int ddf_fun_bind(ddf_fun_t *);
    135164extern int ddf_fun_unbind(ddf_fun_t *);
     
    137166extern int ddf_fun_offline(ddf_fun_t *);
    138167extern int ddf_fun_add_match_id(ddf_fun_t *, const char *, int);
    139 extern void ddf_fun_set_ops(ddf_fun_t *, ddf_dev_ops_t *);
    140 extern void ddf_fun_set_conn_handler(ddf_fun_t *, async_client_conn_t);
     168
    141169extern int ddf_fun_add_to_category(ddf_fun_t *, const char *);
    142170
Note: See TracChangeset for help on using the changeset viewer.