Commit db0f04f3 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76: add mt76_mcu_ops data structure for mcu related pointers

Introduce mt76_mcu_ops data structure to contain mcu related function
pointers. This is a preliminary patch to move mt76x02 usb mcu code in
mt76x02-usb module
Acked-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent dce9dc8d
...@@ -119,6 +119,12 @@ struct mt76_queue { ...@@ -119,6 +119,12 @@ struct mt76_queue {
struct sk_buff *rx_head; struct sk_buff *rx_head;
}; };
struct mt76_mcu_ops {
struct sk_buff *(*mcu_msg_alloc)(const void *data, int len);
int (*mcu_send_msg)(struct mt76_dev *dev, struct sk_buff *skb,
int cmd, bool wait_resp);
};
struct mt76_queue_ops { struct mt76_queue_ops {
int (*init)(struct mt76_dev *dev); int (*init)(struct mt76_dev *dev);
...@@ -336,6 +342,7 @@ struct mt76_dev { ...@@ -336,6 +342,7 @@ struct mt76_dev {
const struct mt76_bus_ops *bus; const struct mt76_bus_ops *bus;
const struct mt76_driver_ops *drv; const struct mt76_driver_ops *drv;
const struct mt76_mcu_ops *mcu_ops;
void __iomem *regs; void __iomem *regs;
struct device *dev; struct device *dev;
...@@ -436,6 +443,9 @@ struct mt76_rx_status { ...@@ -436,6 +443,9 @@ struct mt76_rx_status {
#define mt76_rmw(dev, ...) (dev)->mt76.bus->rmw(&((dev)->mt76), __VA_ARGS__) #define mt76_rmw(dev, ...) (dev)->mt76.bus->rmw(&((dev)->mt76), __VA_ARGS__)
#define mt76_wr_copy(dev, ...) (dev)->mt76.bus->copy(&((dev)->mt76), __VA_ARGS__) #define mt76_wr_copy(dev, ...) (dev)->mt76.bus->copy(&((dev)->mt76), __VA_ARGS__)
#define mt76_mcu_msg_alloc(dev, ...) (dev)->mt76.mcu_ops->mcu_msg_alloc(__VA_ARGS__)
#define mt76_mcu_send_msg(dev, ...) (dev)->mt76.mcu_ops->mcu_send_msg(&((dev)->mt76), __VA_ARGS__)
#define mt76_set(dev, offset, val) mt76_rmw(dev, offset, 0, val) #define mt76_set(dev, offset, val) mt76_rmw(dev, offset, 0, val)
#define mt76_clear(dev, offset, val) mt76_rmw(dev, offset, val, 0) #define mt76_clear(dev, offset, val) mt76_rmw(dev, offset, val, 0)
...@@ -643,5 +653,6 @@ int mt76u_mcu_send_msg(struct mt76_dev *dev, struct sk_buff *skb, ...@@ -643,5 +653,6 @@ int mt76u_mcu_send_msg(struct mt76_dev *dev, struct sk_buff *skb,
void mt76u_mcu_fw_reset(struct mt76_dev *dev); void mt76u_mcu_fw_reset(struct mt76_dev *dev);
int mt76u_mcu_init_rx(struct mt76_dev *dev); int mt76u_mcu_init_rx(struct mt76_dev *dev);
void mt76u_mcu_deinit(struct mt76_dev *dev); void mt76u_mcu_deinit(struct mt76_dev *dev);
void mt76u_init_mcu_ops(struct mt76_dev *dev);
#endif #endif
...@@ -836,6 +836,7 @@ int mt76u_init(struct mt76_dev *dev, ...@@ -836,6 +836,7 @@ int mt76u_init(struct mt76_dev *dev,
mutex_init(&usb->usb_ctrl_mtx); mutex_init(&usb->usb_ctrl_mtx);
dev->bus = &mt76u_ops; dev->bus = &mt76u_ops;
dev->queue_ops = &usb_queue_ops; dev->queue_ops = &usb_queue_ops;
mt76u_init_mcu_ops(dev);
return mt76u_set_endpoints(intf, usb); return mt76u_set_endpoints(intf, usb);
} }
......
...@@ -296,3 +296,13 @@ void mt76u_mcu_deinit(struct mt76_dev *dev) ...@@ -296,3 +296,13 @@ void mt76u_mcu_deinit(struct mt76_dev *dev)
mt76u_buf_free(&usb->mcu.res); mt76u_buf_free(&usb->mcu.res);
} }
EXPORT_SYMBOL_GPL(mt76u_mcu_deinit); EXPORT_SYMBOL_GPL(mt76u_mcu_deinit);
void mt76u_init_mcu_ops(struct mt76_dev *dev)
{
static const struct mt76_mcu_ops mt76u_mcu_ops = {
.mcu_msg_alloc = mt76u_mcu_msg_alloc,
.mcu_send_msg = mt76u_mcu_send_msg,
};
dev->mcu_ops = &mt76u_mcu_ops;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment