Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging/mei: add watchdog device registration wrappers

add mei_watchdog_register/unregister wrappers for
cleaner encapsulation

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Tomas Winkler and committed by
Greg Kroah-Hartman
70cd5337 f3bc9d24

+41 -24
+11
drivers/staging/mei/interface.h
··· 52 52 int mei_wd_stop(struct mei_device *dev, bool preserve); 53 53 bool mei_wd_host_init(struct mei_device *dev); 54 54 void mei_wd_set_start_timeout(struct mei_device *dev, u16 timeout); 55 + /* 56 + * mei_watchdog_register - Registering watchdog interface 57 + * once we got connection to the WD Client 58 + * @dev - mei device 59 + */ 60 + void mei_watchdog_register(struct mei_device *dev); 61 + /* 62 + * mei_watchdog_unregister - Uegistering watchdog interface 63 + * @dev - mei device 64 + */ 65 + void mei_watchdog_unregister(struct mei_device *dev); 55 66 56 67 int mei_flow_ctrl_reduce(struct mei_device *dev, struct mei_cl *cl); 57 68
+2 -16
drivers/staging/mei/interrupt.c
··· 386 386 /* if WD or iamthif client treat specially */ 387 387 388 388 if (is_treat_specially_client(&(dev->wd_cl), rs)) { 389 - dev_dbg(&dev->pdev->dev, "dev->wd_timeout =%d.\n", 390 - dev->wd_timeout); 391 - 392 - dev->wd_due_counter = (dev->wd_timeout) ? 1 : 0; 393 - 394 389 dev_dbg(&dev->pdev->dev, "successfully connected to WD client.\n"); 390 + mei_watchdog_register(dev); 395 391 396 - /* Registering watchdog interface device once we got connection 397 - to the WD Client 398 - */ 399 - if (watchdog_register_device(&amt_wd_dev)) { 400 - printk(KERN_ERR "mei: unable to register watchdog device.\n"); 401 - dev->wd_interface_reg = false; 402 - } else { 403 - dev_dbg(&dev->pdev->dev, "successfully register watchdog interface.\n"); 404 - dev->wd_interface_reg = true; 405 - } 406 - 392 + /* next step in the state maching */ 407 393 mei_host_init_iamthif(dev); 408 394 return; 409 395 }
+1 -2
drivers/staging/mei/main.c
··· 1082 1082 } 1083 1083 1084 1084 /* Unregistering watchdog device */ 1085 - if (dev->wd_interface_reg) 1086 - watchdog_unregister_device(&amt_wd_dev); 1085 + mei_watchdog_unregister(dev); 1087 1086 1088 1087 /* remove entry if already in list */ 1089 1088 dev_dbg(&pdev->dev, "list del iamthif and wd file list.\n");
-5
drivers/staging/mei/mei_dev.h
··· 35 35 */ 36 36 extern struct pci_dev *mei_device; 37 37 38 - /* 39 - * AMT Watchdog Device 40 - */ 41 - #define INTEL_AMT_WATCHDOG_ID "INTCAMT" 42 - extern struct watchdog_device amt_wd_dev; 43 38 44 39 /* 45 40 * AMTHI Client UUID
+27 -1
drivers/staging/mei/wd.c
··· 35 35 {0x07, 0x02, 0x01, 0x10} 36 36 }; 37 37 38 + /* 39 + * AMT Watchdog Device 40 + */ 41 + #define INTEL_AMT_WATCHDOG_ID "INTCAMT" 42 + 38 43 /* UUIDs for AMT F/W clients */ 39 44 const uuid_le mei_wd_guid = UUID_LE(0x05B79A6F, 0x4628, 0x4D7F, 0x89, 40 45 0x9D, 0xA9, 0x15, 0x14, 0xCB, 41 46 0x32, 0xAB); 42 - 43 47 44 48 void mei_wd_set_start_timeout(struct mei_device *dev, u16 timeout) 45 49 { ··· 355 351 .max_timeout = AMT_WD_MAX_TIMEOUT, 356 352 }; 357 353 354 + 355 + void mei_watchdog_register(struct mei_device *dev) 356 + { 357 + dev_dbg(&dev->pdev->dev, "dev->wd_timeout =%d.\n", dev->wd_timeout); 358 + 359 + dev->wd_due_counter = !!dev->wd_timeout; 360 + 361 + if (watchdog_register_device(&amt_wd_dev)) { 362 + dev_err(&dev->pdev->dev, "unable to register watchdog device.\n"); 363 + dev->wd_interface_reg = false; 364 + } else { 365 + dev_dbg(&dev->pdev->dev, "successfully register watchdog interface.\n"); 366 + dev->wd_interface_reg = true; 367 + } 368 + } 369 + 370 + void mei_watchdog_unregister(struct mei_device *dev) 371 + { 372 + if (dev->wd_interface_reg) 373 + watchdog_unregister_device(&amt_wd_dev); 374 + dev->wd_interface_reg = false; 375 + } 358 376