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

Commit 70cd5337 authored by Tomas Winkler's avatar Tomas Winkler Committed by Greg Kroah-Hartman
Browse files

staging/mei: add watchdog device registration wrappers



add mei_watchdog_register/unregister wrappers for
cleaner  encapsulation

Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f3bc9d24
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -52,6 +52,17 @@ int mei_wd_send(struct mei_device *dev);
int mei_wd_stop(struct mei_device *dev, bool preserve);
bool mei_wd_host_init(struct mei_device *dev);
void mei_wd_set_start_timeout(struct mei_device *dev, u16 timeout);
/*
 * mei_watchdog_register  - Registering watchdog interface
 *   once we got connection to the WD Client
 * @dev - mei device
 */
void mei_watchdog_register(struct mei_device *dev);
/*
 * mei_watchdog_unregister  - Uegistering watchdog interface
 * @dev - mei device
 */
void mei_watchdog_unregister(struct mei_device *dev);

int mei_flow_ctrl_reduce(struct mei_device *dev, struct mei_cl *cl);

+2 −16
Original line number Diff line number Diff line
@@ -386,24 +386,10 @@ static void mei_client_connect_response(struct mei_device *dev,
	/* if WD or iamthif client treat specially */

	if (is_treat_specially_client(&(dev->wd_cl), rs)) {
		dev_dbg(&dev->pdev->dev, "dev->wd_timeout =%d.\n",
				dev->wd_timeout);

		dev->wd_due_counter = (dev->wd_timeout) ? 1 : 0;

		dev_dbg(&dev->pdev->dev, "successfully connected to WD client.\n");
		mei_watchdog_register(dev);

		/* Registering watchdog interface device once we got connection
		   to the WD Client
		*/
		if (watchdog_register_device(&amt_wd_dev)) {
			printk(KERN_ERR "mei: unable to register watchdog device.\n");
			dev->wd_interface_reg = false;
		} else {
			dev_dbg(&dev->pdev->dev, "successfully register watchdog interface.\n");
			dev->wd_interface_reg = true;
		}

		/* next step in the state maching */
		mei_host_init_iamthif(dev);
		return;
	}
+1 −2
Original line number Diff line number Diff line
@@ -1082,8 +1082,7 @@ static void __devexit mei_remove(struct pci_dev *pdev)
	}

	/* Unregistering watchdog device */
	if (dev->wd_interface_reg)
		watchdog_unregister_device(&amt_wd_dev);
	mei_watchdog_unregister(dev);

	/* remove entry if already in list */
	dev_dbg(&pdev->dev, "list del iamthif and wd file list.\n");
+0 −5
Original line number Diff line number Diff line
@@ -35,11 +35,6 @@
 */
extern struct pci_dev *mei_device;

/*
 * AMT Watchdog Device
 */
#define INTEL_AMT_WATCHDOG_ID "INTCAMT"
extern struct watchdog_device amt_wd_dev;

/*
 * AMTHI Client UUID
+27 −1
Original line number Diff line number Diff line
@@ -35,12 +35,16 @@ const u8 mei_wd_state_independence_msg[3][4] = {
	{0x07, 0x02, 0x01, 0x10}
};

/*
 * AMT Watchdog Device
 */
#define INTEL_AMT_WATCHDOG_ID "INTCAMT"

/* UUIDs for AMT F/W clients */
const uuid_le mei_wd_guid = UUID_LE(0x05B79A6F, 0x4628, 0x4D7F, 0x89,
						0x9D, 0xA9, 0x15, 0x14, 0xCB,
						0x32, 0xAB);


void mei_wd_set_start_timeout(struct mei_device *dev, u16 timeout)
{
	dev_dbg(&dev->pdev->dev, "timeout=%d.\n", timeout);
@@ -352,3 +356,25 @@ struct watchdog_device amt_wd_dev = {
};


void  mei_watchdog_register(struct mei_device *dev)
{
	dev_dbg(&dev->pdev->dev, "dev->wd_timeout =%d.\n", dev->wd_timeout);

	dev->wd_due_counter = !!dev->wd_timeout;

	if (watchdog_register_device(&amt_wd_dev)) {
		dev_err(&dev->pdev->dev, "unable to register watchdog device.\n");
		dev->wd_interface_reg = false;
	} else {
		dev_dbg(&dev->pdev->dev, "successfully register watchdog interface.\n");
		dev->wd_interface_reg = true;
	}
}

void mei_watchdog_unregister(struct mei_device *dev)
{
	if (dev->wd_interface_reg)
		watchdog_unregister_device(&amt_wd_dev);
	dev->wd_interface_reg = false;
}