[PATCH] driver for the "Fujitsu Tablet PC Buttons" device
Robert Gerlach
khnz at gmx.de
Fri Oct 23 22:54:01 UTC 2009
On Monday 12 October 2009 16:39:03 Greg KH wrote:
> On Mon, Oct 12, 2009 at 12:40:35PM +0200, Robert Gerlach wrote:
> > +static struct { /* fscbtns_t */
> > + struct platform_device *pdev;
> > + struct input_dev *idev_b; /* tablet buttons */
> > + struct input_dev *idev_s; /* orientation switch */
> > +#if (defined(STICKY_TIMEOUT) && (STICKY_TIMEOUT > 0))
> > + struct timer_list timer;
> > +#endif
>
> Why would you not want this defined?
I'm not sure about the sticky keys stuff at all (right way, right place, aso),
so I put all related code in this ifdefs. I think I'll remove the
ifdefs, if the sticky code okay.
> > +static unsigned int user_model;
> > +module_param_named(model, user_model, uint, 0);
> > +MODULE_PARM_DESC(model, "model (1 = Stylistic, 2 = Lifebook T- and
> > P-Series, 3 = Stylistic ST5xxx, 4 = Lifebook U800)");
>
> I don't think you need this module parameter anymore, right? Now that
> you are matching on DMI strings, it can be detected automatically.
Right, I'll remove this.
> > +static struct dmi_system_id dmi_ids[] __initdata = {
> > + {
> > + .callback = fscbtns_dmi_matched,
> > + .ident = "Fujitsu Siemens P/T Series",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK")
> > + },
> > + .driver_data = &config_Lifebook_Tseries
> > + },
> > + {
> > + .callback = fscbtns_dmi_matched,
> > + .ident = "Fujitsu Lifebook T Series",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook T")
> > + },
> > + .driver_data = &config_Lifebook_Tseries
> > + },
> > + {
> > + .callback = fscbtns_dmi_matched,
> > + .ident = "Fujitsu Siemens Stylistic T Series",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "Stylistic T")
> > + },
> > + .driver_data = &config_Stylistic_Tseries
> > + },
> > + {
> > + .callback = fscbtns_dmi_matched,
> > + .ident = "Fujitsu LifeBook U810",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook U810")
> > + },
> > + .driver_data = &config_Lifebook_U810
> > + },
> > + {
> > + .callback = fscbtns_dmi_matched,
> > + .ident = "Fujitsu Siemens Stylistic ST5xxx Series",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "STYLISTIC ST5")
> > + },
> > + .driver_data = &config_Stylistic_ST5xxx
> > + },
> > + {
> > + .callback = fscbtns_dmi_matched,
> > + .ident = "Fujitsu Siemens Stylistic ST5xxx Series",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "Stylistic ST5")
> > + },
> > + .driver_data = &config_Stylistic_ST5xxx
> > + },
> > + {
> > + .callback = fscbtns_dmi_matched,
> > + .ident = "Unknown (using defaults)",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, ""),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "")
> > + },
> > + .driver_data = &config_Lifebook_Tseries
> > + },
> > + { NULL }
> > +};
>
> Add a MODULE_DEVICE_TABLE for this structure, and then it will be loaded
> automatically by the userspace module scripts if the device is present
> on the machine. It should be as simple as adding the line:
> MODULE_DEVICE_TABLE(dmi, dmi_ids);
I'm not sure if the DMI a good source for this, because only a subset of the
Stylistic and Lifebook models have this device. I would rather use the
presence of the ACPI entry (like the windows driver), if it's not a problem.
static const struct acpi_device_id fscbtns_ids[] = {
{ .id = "FUJ02BD" },
{ .id = "FUJ02BF" },
{ .id = "" }
};
MODULE_DEVICE_TABLE(acpi, fscbtns_ids);
Many thanks for the comments. I'll send a updated patch to the linux-input
list in the next days.
Robert
More information about the devel
mailing list