Skip to content

Commit

Permalink
mei: bus: Call bus routines from the core code
Browse files Browse the repository at this point in the history
Register the MEI bus type against the kernel core bus APIs and
call the bus Rx handler from interrupt.c

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Samuel Ortiz authored and Greg Kroah-Hartman committed Mar 29, 2013
1 parent a7b71bc commit cf3baef
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 2 deletions.
22 changes: 22 additions & 0 deletions drivers/misc/mei/bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,3 +441,25 @@ int mei_cl_register_event_cb(struct mei_cl_device *device,
return 0;
}
EXPORT_SYMBOL_GPL(mei_cl_register_event_cb);

void mei_cl_bus_rx_event(struct mei_cl *cl)
{
struct mei_cl_device *device = cl->device;

if (!device || !device->event_cb)
return;

set_bit(MEI_CL_EVENT_RX, &device->events);

schedule_work(&device->event_work);
}

int __init mei_cl_bus_init(void)
{
return bus_register(&mei_cl_bus_type);
}

void __exit mei_cl_bus_exit(void)
{
bus_unregister(&mei_cl_bus_type);
}
2 changes: 2 additions & 0 deletions drivers/misc/mei/interrupt.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ static void mei_cl_complete_handler(struct mei_cl *cl, struct mei_cl_cb *cb)
cl->reading_state = MEI_READ_COMPLETE;
if (waitqueue_active(&cl->rx_wait))
wake_up_interruptible(&cl->rx_wait);
else
mei_cl_bus_rx_event(cl);

}
}
Expand Down
13 changes: 13 additions & 0 deletions drivers/misc/mei/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -767,6 +767,19 @@ void mei_deregister(void)
}
EXPORT_SYMBOL_GPL(mei_deregister);

static int __init mei_init(void)
{
return mei_cl_bus_init();
}

static void __exit mei_exit(void)
{
mei_cl_bus_exit();
}

module_init(mei_init);
module_exit(mei_exit);

MODULE_AUTHOR("Intel Corporation");
MODULE_DESCRIPTION("Intel(R) Management Engine Interface");
MODULE_LICENSE("GPL v2");
Expand Down
6 changes: 5 additions & 1 deletion drivers/misc/mei/mei_dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,11 @@ struct mei_cl_transport_ops {
int (*recv)(struct mei_cl_device *device, u8 *buf, size_t length);
};

void mei_cl_bus_rx_event(struct mei_cl *cl);
int mei_cl_bus_init(void);
void mei_cl_bus_exit(void);


/**
* struct mei_cl_device - MEI device handle
* An mei_cl_device pointer is returned from mei_add_device()
Expand Down Expand Up @@ -451,7 +456,6 @@ static inline u32 mei_data2slots(size_t length)
return DIV_ROUND_UP(sizeof(struct mei_msg_hdr) + length, 4);
}


/*
* mei init function prototypes
*/
Expand Down
1 change: 0 additions & 1 deletion drivers/misc/mei/pci-me.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,6 @@ static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
mei_pdev = pdev;
pci_set_drvdata(pdev, dev);


schedule_delayed_work(&dev->timer_work, HZ);

mutex_unlock(&mei_mutex);
Expand Down

0 comments on commit cf3baef

Please sign in to comment.