Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 268304
b: refs/heads/master
c: 9ce178e
h: refs/heads/master
v: v3
  • Loading branch information
Oren Weil authored and Greg Kroah-Hartman committed Sep 9, 2011
1 parent 9c0b19e commit b099826
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 92eb40134332eba28cde3c2aecdb48a561c437b1
refs/heads/master: 9ce178e539e0511571a9517e63980e68427b5585
1 change: 1 addition & 0 deletions trunk/drivers/staging/mei/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ struct mei_device *mei_device_init(struct pci_dev *pdev)
init_waitqueue_head(&dev->wait_stop_wd);
dev->mei_state = MEI_INITIALIZING;
dev->iamthif_state = MEI_IAMTHIF_IDLE;
dev->wd_interface_reg = false;


mei_io_list_init(&dev->read_list);
Expand Down
4 changes: 3 additions & 1 deletion trunk/drivers/staging/mei/interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@
#include "mei_dev.h"


#define AMT_WD_VALUE 120 /* seconds */
#define AMT_WD_DEFAULT_TIMEOUT 120 /* seconds */
#define AMT_WD_MIN_TIMEOUT 120 /* seconds */
#define AMT_WD_MAX_TIMEOUT 65535 /* seconds */

#define MEI_WATCHDOG_DATA_SIZE 16
#define MEI_START_WD_DATA_SIZE 20
Expand Down
12 changes: 12 additions & 0 deletions trunk/drivers/staging/mei/interrupt.c
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,18 @@ static void mei_client_connect_response(struct mei_device *dev,
dev->wd_due_counter = (dev->wd_timeout) ? 1 : 0;

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

/* 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;
}

mei_host_init_iamthif(dev);
return;
}
Expand Down
4 changes: 4 additions & 0 deletions trunk/drivers/staging/mei/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,10 @@ static void __devexit mei_remove(struct pci_dev *pdev)
mei_disconnect_host_client(dev, &dev->wd_cl);
}

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

/* remove entry if already in list */
dev_dbg(&pdev->dev, "list del iamthif and wd file list.\n");
mei_remove_client_from_file_list(dev, dev->wd_cl.host_client_id);
Expand Down
9 changes: 9 additions & 0 deletions trunk/drivers/staging/mei/mei_dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#define _MEI_DEV_H_

#include <linux/types.h>
#include <linux/watchdog.h>
#include "mei.h"
#include "hw.h"

Expand All @@ -36,6 +37,12 @@
#define MEI_WD_PARAMS_SIZE 4
#define MEI_WD_STATE_INDEPENDENCE_MSG_SENT (1 << 0)

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

/*
* AMTHI Client UUID
*/
Expand Down Expand Up @@ -258,6 +265,8 @@ struct mei_device {
bool iamthif_flow_control_pending;
bool iamthif_ioctl;
bool iamthif_canceled;

bool wd_interface_reg;
};


Expand Down
20 changes: 18 additions & 2 deletions trunk/drivers/staging/mei/wd.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,36 @@
#include <linux/device.h>
#include <linux/pci.h>
#include <linux/sched.h>
#include <linux/watchdog.h>

#include "mei_dev.h"
#include "hw.h"
#include "interface.h"
#include "mei.h"

/*
* Watchdog Device structs
*/
const struct watchdog_info wd_info = {
.identity = INTEL_AMT_WATCHDOG_ID,
};

struct watchdog_device amt_wd_dev = {
.info = &wd_info,
.timeout = AMT_WD_DEFAULT_TIMEOUT,
.min_timeout = AMT_WD_MIN_TIMEOUT,
.max_timeout = AMT_WD_MAX_TIMEOUT,
};


/*
* MEI Watchdog Module Parameters
*/
static u16 watchdog_timeout = AMT_WD_VALUE;
static u16 watchdog_timeout = AMT_WD_DEFAULT_TIMEOUT;
module_param(watchdog_timeout, ushort, 0);
MODULE_PARM_DESC(watchdog_timeout,
"Intel(R) AMT Watchdog timeout value in seconds. (default="
__MODULE_STRING(AMT_WD_VALUE)
__MODULE_STRING(AMT_WD_DEFAULT_TIMEOUT)
", disable=0)");

static const u8 mei_start_wd_params[] = { 0x02, 0x12, 0x13, 0x10 };
Expand Down

0 comments on commit b099826

Please sign in to comment.