Hi Rafael, > +struct ofono_gps_driver { > + const char *name; > + int (*probe)(struct ofono_gps *gps, unsigned int vendor, void *data); > + void (*remove)(struct ofono_gps *gps); > + void (*set_gps)(struct ofono_gps *gps, ofono_bool_t enable, > + ofono_gps_set_cb_t, void *data); I would suggest breaking this up into enable and disable methods. With the enable providing additional information to the core, namely: - NMEA / whatever device node to use - type of the device For the type information I suggest defining an enum with the possible types. Right now nmea is probably the only thing we want to support... > + void (*query_gps)(struct ofono_gps *gps, ofono_gps_query_cb_t cb, > + void *data); I'm currently not sure this query function is really needed. I think we should just assume that the gps device is always powered=false when the atom is created. Regards, -Denis