Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0afef456 authored by Stuart Yoder's avatar Stuart Yoder Committed by Greg Kroah-Hartman
Browse files

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: default avatarStuart Yoder <stuart.yoder@nxp.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 57538afb
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -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
 *
+16 −0
Original line number Diff line number Diff line
@@ -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 */
+4 −0
Original line number Diff line number Diff line
@@ -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;
}
+12 −0
Original line number Diff line number Diff line
@@ -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)
{