···2222#include <linux/kernel.h>2323#include <linux/module.h>2424#include <linux/device.h>2525-#include <linux/semaphore.h>2625#include <linux/interrupt.h>2726#include <linux/workqueue.h>2827#include <linux/i2c.h>···5455 * Drivers should either disable alerts, or provide at least5556 * a minimal handler. Lock so client->driver won't change.5657 */5757- down(&dev->sem);5858+ device_lock(dev);5859 if (client->driver) {5960 if (client->driver->alert)6061 client->driver->alert(client, data->flag);···6263 dev_warn(&client->dev, "no driver alert()!\n");6364 } else6465 dev_dbg(&client->dev, "alert with no driver\n");6565- up(&dev->sem);6666+ device_unlock(dev);66676768 /* Stop iterating after we find the device */6869 return -EBUSY;