1
0
Fork 0

staging: fsl-mc: add support for device table matching

Move the definition of fsl_mc_device_id to its proper location in
mod_devicetable.h, and add fsl-mc bus support to devicetable-offsets.c
and file2alias.c to enable device table matching.  With this patch udev
based module loading of fsl-mc drivers is supported.

Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
hifive-unleashed-5.1
Stuart Yoder 2016-06-22 16:40:45 -05:00 committed by Greg Kroah-Hartman
parent 57538afb42
commit 0afef45654
4 changed files with 32 additions and 13 deletions

View File

@ -50,19 +50,6 @@ struct fsl_mc_driver {
#define to_fsl_mc_driver(_drv) \
container_of(_drv, struct fsl_mc_driver, driver)
/**
* struct fsl_mc_device_id - MC object device Id entry for driver matching
* @vendor: vendor ID
* @obj_type: MC object type
*
* Type of entries in the "device Id" table for MC object devices supported by
* a MC object device driver. The last entry of the table has vendor set to 0x0
*/
struct fsl_mc_device_id {
u16 vendor;
const char obj_type[16];
};
/**
* enum fsl_mc_pool_type - Types of allocatable MC bus resources
*

View File

@ -657,4 +657,20 @@ struct ulpi_device_id {
kernel_ulong_t driver_data;
};
/**
* struct fsl_mc_device_id - MC object device identifier
* @vendor: vendor ID
* @obj_type: MC object type
* @ver_major: MC object version major number
* @ver_minor: MC object version minor number
*
* Type of entries in the "device Id" table for MC object devices supported by
* a MC object device driver. The last entry of the table has vendor set to 0x0
*/
struct fsl_mc_device_id {
__u16 vendor;
const char obj_type[16];
};
#endif /* LINUX_MOD_DEVICETABLE_H */

View File

@ -202,5 +202,9 @@ int main(void)
DEVID_FIELD(hda_device_id, rev_id);
DEVID_FIELD(hda_device_id, api_version);
DEVID(fsl_mc_device_id);
DEVID_FIELD(fsl_mc_device_id, vendor);
DEVID_FIELD(fsl_mc_device_id, obj_type);
return 0;
}

View File

@ -1289,6 +1289,18 @@ static int do_hda_entry(const char *filename, void *symval, char *alias)
}
ADD_TO_DEVTABLE("hdaudio", hda_device_id, do_hda_entry);
/* Looks like: fsl-mc:vNdN */
static int do_fsl_mc_entry(const char *filename, void *symval,
char *alias)
{
DEF_FIELD(symval, fsl_mc_device_id, vendor);
DEF_FIELD_ADDR(symval, fsl_mc_device_id, obj_type);
sprintf(alias, "fsl-mc:v%08Xd%s", vendor, *obj_type);
return 1;
}
ADD_TO_DEVTABLE("fslmc", fsl_mc_device_id, do_fsl_mc_entry);
/* Does namelen bytes of name exactly match the symbol? */
static bool sym_is(const char *name, unsigned namelen, const char *symbol)
{