Symbol: mcu
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
101
mutex_lock(&mcu->lock);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
103
mcu->reg_ctrl &= ~bit;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
105
mcu->reg_ctrl |= bit;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
107
ret = i2c_smbus_write_byte_data(mcu->client, MCU_REG_CTRL,
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
108
mcu->reg_ctrl);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
109
mutex_unlock(&mcu->lock);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
119
static int mcu_gpiochip_add(struct mcu *mcu)
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
121
struct device *dev = &mcu->client->dev;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
122
struct gpio_chip *gc = &mcu->gc;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
135
return gpiochip_add_data(gc, mcu);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
138
static void mcu_gpiochip_remove(struct mcu *mcu)
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
140
kfree(mcu->gc.label);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
141
gpiochip_remove(&mcu->gc);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
146
struct mcu *mcu;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
149
mcu = kzalloc_obj(*mcu);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
150
if (!mcu)
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
153
mutex_init(&mcu->lock);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
154
mcu->client = client;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
155
i2c_set_clientdata(client, mcu);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
157
ret = i2c_smbus_read_byte_data(mcu->client, MCU_REG_CTRL);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
160
mcu->reg_ctrl = ret;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
162
ret = mcu_gpiochip_add(mcu);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
168
glob_mcu = mcu;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
182
kfree(mcu);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
188
struct mcu *mcu = i2c_get_clientdata(client);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
194
if (glob_mcu == mcu) {
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
199
mcu_gpiochip_remove(mcu);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
200
kfree(mcu);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
40
static struct mcu *glob_mcu;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
46
struct mcu *mcu = glob_mcu;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
49
ret = i2c_smbus_read_byte_data(mcu->client, MCU_REG_CTRL);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
52
mcu->reg_ctrl = ret;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
55
if (mcu->reg_ctrl & MCU_CTRL_BTN) {
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
56
i2c_smbus_write_byte_data(mcu->client, MCU_REG_CTRL,
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
57
mcu->reg_ctrl & ~MCU_CTRL_BTN);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
73
struct mcu *mcu = glob_mcu;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
75
ret = i2c_smbus_read_byte_data(mcu->client, MCU_REG_CTRL);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
78
mcu->reg_ctrl = ret;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
86
struct mcu *mcu = glob_mcu;
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
89
mutex_lock(&mcu->lock);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
90
i2c_smbus_write_byte_data(mcu->client, MCU_REG_CTRL,
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
91
mcu->reg_ctrl | MCU_CTRL_POFF);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
92
mutex_unlock(&mcu->lock);
arch/powerpc/platforms/83xx/mcu_mpc8349emitx.c
97
struct mcu *mcu = gpiochip_get_data(gc);
drivers/dma/imx-sdma.c
704
unsigned long evt, mcu, dsp;
drivers/dma/imx-sdma.c
710
mcu = readl_relaxed(sdma->regs + SDMA_H_HOSTOVR);
drivers/dma/imx-sdma.c
724
__clear_bit(channel, &mcu);
drivers/dma/imx-sdma.c
726
__set_bit(channel, &mcu);
drivers/dma/imx-sdma.c
729
writel_relaxed(mcu, sdma->regs + SDMA_H_HOSTOVR);
drivers/edac/xgene_edac.c
1823
struct xgene_edac_mc_ctx *mcu;
drivers/edac/xgene_edac.c
1825
list_for_each_entry(mcu, &ctx->mcus, next)
drivers/edac/xgene_edac.c
1826
xgene_edac_mc_check(mcu->mci);
drivers/edac/xgene_edac.c
1965
struct xgene_edac_mc_ctx *mcu;
drivers/edac/xgene_edac.c
1972
list_for_each_entry_safe(mcu, temp_mcu, &edac->mcus, next)
drivers/edac/xgene_edac.c
1973
xgene_edac_mc_remove(mcu);
drivers/edac/xgene_edac.c
438
static int xgene_edac_mc_remove(struct xgene_edac_mc_ctx *mcu)
drivers/edac/xgene_edac.c
440
xgene_edac_mc_irq_ctl(mcu->mci, false);
drivers/edac/xgene_edac.c
441
edac_mc_del_mc(&mcu->mci->dev);
drivers/edac/xgene_edac.c
442
edac_mc_free(mcu->mci);
drivers/hwmon/qnap-mcu-hwmon.c
17
struct qnap_mcu *mcu;
drivers/hwmon/qnap-mcu-hwmon.c
294
struct qnap_mcu *mcu = dev_get_drvdata(pdev->dev.parent);
drivers/hwmon/qnap-mcu-hwmon.c
306
hwm->mcu = mcu;
drivers/hwmon/qnap-mcu-hwmon.c
39
ret = qnap_mcu_exec(hwm->mcu, cmd, sizeof(cmd), reply, sizeof(reply));
drivers/hwmon/qnap-mcu-hwmon.c
57
ret = qnap_mcu_exec(hwm->mcu, cmd, sizeof(cmd), reply, sizeof(reply));
drivers/hwmon/qnap-mcu-hwmon.c
73
return qnap_mcu_exec_with_ack(hwm->mcu, cmd, sizeof(cmd));
drivers/hwmon/qnap-mcu-hwmon.c
83
ret = qnap_mcu_exec(hwm->mcu, cmd, sizeof(cmd), reply, sizeof(reply));
drivers/hwmon/sg2042-mcu.c
105
struct sg2042_mcu_data *mcu = dev_get_drvdata(dev);
drivers/hwmon/sg2042-mcu.c
109
ret = i2c_smbus_read_byte_data(mcu->client, REG_REPOWER_POLICY);
drivers/hwmon/sg2042-mcu.c
127
struct sg2042_mcu_data *mcu = dev_get_drvdata(dev);
drivers/hwmon/sg2042-mcu.c
138
ret = i2c_smbus_write_byte_data(mcu->client,
drivers/hwmon/sg2042-mcu.c
185
struct sg2042_mcu_data *mcu = dev_get_drvdata(dev);
drivers/hwmon/sg2042-mcu.c
203
tmp = i2c_smbus_read_byte_data(mcu->client, reg);
drivers/hwmon/sg2042-mcu.c
215
struct sg2042_mcu_data *mcu = dev_get_drvdata(dev);
drivers/hwmon/sg2042-mcu.c
222
guard(mutex)(&mcu->mutex);
drivers/hwmon/sg2042-mcu.c
226
hyst_temp = i2c_smbus_read_byte_data(mcu->client,
drivers/hwmon/sg2042-mcu.c
235
crit_temp = i2c_smbus_read_byte_data(mcu->client,
drivers/hwmon/sg2042-mcu.c
254
return i2c_smbus_write_byte_data(mcu->client, reg, temp);
drivers/hwmon/sg2042-mcu.c
292
static void sg2042_mcu_debugfs_init(struct sg2042_mcu_data *mcu)
drivers/hwmon/sg2042-mcu.c
294
debugfs_create_file("firmware_version", 0444, mcu->client->debugfs,
drivers/hwmon/sg2042-mcu.c
295
mcu, &firmware_version_fops);
drivers/hwmon/sg2042-mcu.c
296
debugfs_create_file("pcb_version", 0444, mcu->client->debugfs, mcu,
drivers/hwmon/sg2042-mcu.c
298
debugfs_create_file("mcu_type", 0444, mcu->client->debugfs, mcu,
drivers/hwmon/sg2042-mcu.c
300
debugfs_create_file("board_type", 0444, mcu->client->debugfs, mcu,
drivers/hwmon/sg2042-mcu.c
307
struct sg2042_mcu_data *mcu;
drivers/hwmon/sg2042-mcu.c
314
mcu = devm_kmalloc(dev, sizeof(*mcu), GFP_KERNEL);
drivers/hwmon/sg2042-mcu.c
315
if (!mcu)
drivers/hwmon/sg2042-mcu.c
318
mutex_init(&mcu->mutex);
drivers/hwmon/sg2042-mcu.c
319
mcu->client = client;
drivers/hwmon/sg2042-mcu.c
321
i2c_set_clientdata(client, mcu);
drivers/hwmon/sg2042-mcu.c
324
mcu,
drivers/hwmon/sg2042-mcu.c
330
sg2042_mcu_debugfs_init(mcu);
drivers/hwmon/sg2042-mcu.c
41
struct sg2042_mcu_data *mcu = seqf->private; \
drivers/hwmon/sg2042-mcu.c
43
ret = i2c_smbus_read_byte_data(mcu->client, (_reg)); \
drivers/hwmon/sg2042-mcu.c
60
struct sg2042_mcu_data *mcu = dev_get_drvdata(dev);
drivers/hwmon/sg2042-mcu.c
63
ret = i2c_smbus_read_byte_data(mcu->client, REG_RST_COUNT);
drivers/hwmon/sg2042-mcu.c
74
struct sg2042_mcu_data *mcu = dev_get_drvdata(dev);
drivers/hwmon/sg2042-mcu.c
78
ret = i2c_smbus_read_i2c_block_data(mcu->client, REG_UPTIME,
drivers/hwmon/sg2042-mcu.c
91
struct sg2042_mcu_data *mcu = dev_get_drvdata(dev);
drivers/hwmon/sg2042-mcu.c
94
ret = i2c_smbus_read_byte_data(mcu->client, REG_RESET_REASON);
drivers/input/misc/qnap-mcu-input.c
110
idev->mcu = mcu;
drivers/input/misc/qnap-mcu-input.c
24
struct qnap_mcu *mcu;
drivers/input/misc/qnap-mcu-input.c
39
ret = qnap_mcu_exec(idev->mcu, cmd, sizeof(cmd), reply, sizeof(reply));
drivers/input/misc/qnap-mcu-input.c
60
qnap_mcu_exec_with_ack(idev->mcu, cmd, sizeof(cmd));
drivers/input/misc/qnap-mcu-input.c
94
struct qnap_mcu *mcu = dev_get_drvdata(pdev->dev.parent);
drivers/leds/leds-qnap-mcu.c
113
struct qnap_mcu *mcu;
drivers/leds/leds-qnap-mcu.c
142
return qnap_mcu_exec_with_ack(usb_led->mcu, cmd, sizeof(cmd));
drivers/leds/leds-qnap-mcu.c
166
return qnap_mcu_exec_with_ack(usb_led->mcu, cmd, sizeof(cmd));
drivers/leds/leds-qnap-mcu.c
169
static int qnap_mcu_register_usb_led(struct device *dev, struct qnap_mcu *mcu)
drivers/leds/leds-qnap-mcu.c
178
usb_led->mcu = mcu;
drivers/leds/leds-qnap-mcu.c
207
struct qnap_mcu *mcu;
drivers/leds/leds-qnap-mcu.c
23
struct qnap_mcu *mcu;
drivers/leds/leds-qnap-mcu.c
261
static int qnap_mcu_status_led_update(struct qnap_mcu *mcu,
drivers/leds/leds-qnap-mcu.c
268
return qnap_mcu_exec_with_ack(mcu, cmd, sizeof(cmd));
drivers/leds/leds-qnap-mcu.c
284
return qnap_mcu_status_led_update(base->mcu, base);
drivers/leds/leds-qnap-mcu.c
307
return qnap_mcu_status_led_update(base->mcu, base);
drivers/leds/leds-qnap-mcu.c
310
static int qnap_mcu_register_status_leds(struct device *dev, struct qnap_mcu *mcu)
drivers/leds/leds-qnap-mcu.c
319
status->mcu = mcu;
drivers/leds/leds-qnap-mcu.c
350
return qnap_mcu_status_led_update(status->mcu, status);
drivers/leds/leds-qnap-mcu.c
355
struct qnap_mcu *mcu = dev_get_drvdata(pdev->dev.parent);
drivers/leds/leds-qnap-mcu.c
360
ret = qnap_mcu_register_err_led(&pdev->dev, mcu, i);
drivers/leds/leds-qnap-mcu.c
367
ret = qnap_mcu_register_usb_led(&pdev->dev, mcu);
drivers/leds/leds-qnap-mcu.c
373
ret = qnap_mcu_register_status_leds(&pdev->dev, mcu);
drivers/leds/leds-qnap-mcu.c
49
return qnap_mcu_exec_with_ack(err_led->mcu, cmd, sizeof(cmd));
drivers/leds/leds-qnap-mcu.c
75
return qnap_mcu_exec_with_ack(err_led->mcu, cmd, sizeof(cmd));
drivers/leds/leds-qnap-mcu.c
78
static int qnap_mcu_register_err_led(struct device *dev, struct qnap_mcu *mcu, int num_err_led)
drivers/leds/leds-qnap-mcu.c
87
err_led->mcu = mcu;
drivers/mfd/qnap-mcu.c
102
serdev_device_write_flush(mcu->serdev);
drivers/mfd/qnap-mcu.c
104
return serdev_device_write(mcu->serdev, tx, length, HZ);
drivers/mfd/qnap-mcu.c
134
static bool qnap_mcu_reply_is_any_error(struct qnap_mcu *mcu, unsigned char *buf, size_t size)
drivers/mfd/qnap-mcu.c
137
dev_err(&mcu->serdev->dev, "Controller sent generic error response\n");
drivers/mfd/qnap-mcu.c
142
dev_err(&mcu->serdev->dev, "Controller received invalid checksum for the command\n");
drivers/mfd/qnap-mcu.c
152
struct qnap_mcu *mcu = dev_get_drvdata(dev);
drivers/mfd/qnap-mcu.c
153
struct qnap_mcu_reply *reply = &mcu->reply;
drivers/mfd/qnap-mcu.c
193
qnap_mcu_reply_is_any_error(mcu, reply->data, reply->received)) {
drivers/mfd/qnap-mcu.c
213
int qnap_mcu_exec(struct qnap_mcu *mcu,
drivers/mfd/qnap-mcu.c
219
struct qnap_mcu_reply *reply = &mcu->reply;
drivers/mfd/qnap-mcu.c
223
dev_err(&mcu->serdev->dev, "expected data too big for receive buffer");
drivers/mfd/qnap-mcu.c
227
guard(mutex)(&mcu->bus_lock);
drivers/mfd/qnap-mcu.c
234
ret = qnap_mcu_write(mcu, cmd_data, cmd_data_size);
drivers/mfd/qnap-mcu.c
238
serdev_device_wait_until_sent(mcu->serdev, msecs_to_jiffies(QNAP_MCU_TIMEOUT_MS));
drivers/mfd/qnap-mcu.c
241
dev_err(&mcu->serdev->dev, "Command timeout\n");
drivers/mfd/qnap-mcu.c
246
dev_err(&mcu->serdev->dev, "Invalid Checksum received from controller\n");
drivers/mfd/qnap-mcu.c
250
if (qnap_mcu_reply_is_any_error(mcu, rx, reply->received))
drivers/mfd/qnap-mcu.c
259
int qnap_mcu_exec_with_ack(struct qnap_mcu *mcu,
drivers/mfd/qnap-mcu.c
265
ret = qnap_mcu_exec(mcu, cmd_data, cmd_data_size, ack, sizeof(ack));
drivers/mfd/qnap-mcu.c
271
dev_err(&mcu->serdev->dev, "Did not receive ack\n");
drivers/mfd/qnap-mcu.c
279
static int qnap_mcu_get_version(struct qnap_mcu *mcu)
drivers/mfd/qnap-mcu.c
286
ret = qnap_mcu_exec(mcu, cmd, sizeof(cmd), rx, QNAP_MCU_VERSION_LEN + 2);
drivers/mfd/qnap-mcu.c
290
memcpy(mcu->version, &rx[2], QNAP_MCU_VERSION_LEN);
drivers/mfd/qnap-mcu.c
307
struct qnap_mcu *mcu = data->cb_data;
drivers/mfd/qnap-mcu.c
310
ret = qnap_mcu_exec_with_ack(mcu, cmd, sizeof(cmd));
drivers/mfd/qnap-mcu.c
312
dev_err(&mcu->serdev->dev, "MCU poweroff failed %d\n", ret);
drivers/mfd/qnap-mcu.c
353
struct qnap_mcu *mcu;
drivers/mfd/qnap-mcu.c
356
mcu = devm_kzalloc(dev, sizeof(*mcu), GFP_KERNEL);
drivers/mfd/qnap-mcu.c
357
if (!mcu)
drivers/mfd/qnap-mcu.c
360
mcu->serdev = serdev;
drivers/mfd/qnap-mcu.c
361
dev_set_drvdata(dev, mcu);
drivers/mfd/qnap-mcu.c
363
mcu->variant = of_device_get_match_data(dev);
drivers/mfd/qnap-mcu.c
364
if (!mcu->variant)
drivers/mfd/qnap-mcu.c
367
mutex_init(&mcu->bus_lock);
drivers/mfd/qnap-mcu.c
368
init_completion(&mcu->reply.done);
drivers/mfd/qnap-mcu.c
375
serdev_device_set_baudrate(serdev, mcu->variant->baud_rate);
drivers/mfd/qnap-mcu.c
382
ret = qnap_mcu_get_version(mcu);
drivers/mfd/qnap-mcu.c
389
&qnap_mcu_power_off, mcu);
drivers/mfd/qnap-mcu.c
395
qnap_mcu_cells[i].platform_data = mcu->variant;
drivers/mfd/qnap-mcu.c
396
qnap_mcu_cells[i].pdata_size = sizeof(*mcu->variant);
drivers/mfd/qnap-mcu.c
89
static int qnap_mcu_write(struct qnap_mcu *mcu, const u8 *data, u8 data_size)
drivers/mfd/qnap-mcu.c
95
dev_err(&mcu->serdev->dev, "data too big for transmit buffer");
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
140
wo->mcu.timeout = 20 * HZ;
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
147
u16 seq = ++wo->mcu.seq;
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
150
seq = ++wo->mcu.seq;
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
202
mutex_lock(&wo->mcu.mutex);
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
208
expires = jiffies + wo->mcu.timeout;
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
216
mutex_unlock(&wo->mcu.mutex);
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
391
skb_queue_head_init(&wo->mcu.res_q);
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
392
init_waitqueue_head(&wo->mcu.wait);
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
393
mutex_init(&wo->mcu.mutex);
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
69
wait_event_timeout(wo->mcu.wait, !skb_queue_empty(&wo->mcu.res_q),
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
71
return skb_dequeue(&wo->mcu.res_q);
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
76
skb_queue_tail(&wo->mcu.res_q, skb);
drivers/net/ethernet/mediatek/mtk_wed_mcu.c
77
wake_up(&wo->mcu.wait);
drivers/net/ethernet/mediatek/mtk_wed_wo.h
244
} mcu;
drivers/net/wireless/mediatek/mt76/mac80211.c
699
skb_queue_head_init(&dev->mcu.res_q);
drivers/net/wireless/mediatek/mt76/mac80211.c
700
init_waitqueue_head(&dev->mcu.wait);
drivers/net/wireless/mediatek/mt76/mac80211.c
701
mutex_init(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mcu.c
110
expires = jiffies + dev->mcu.timeout;
drivers/net/wireless/mediatek/mt76/mcu.c
132
mutex_unlock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mcu.c
41
wait_event_timeout(dev->mcu.wait,
drivers/net/wireless/mediatek/mt76/mcu.c
42
(!skb_queue_empty(&dev->mcu.res_q) ||
drivers/net/wireless/mediatek/mt76/mcu.c
45
return skb_dequeue(&dev->mcu.res_q);
drivers/net/wireless/mediatek/mt76/mcu.c
51
skb_queue_tail(&dev->mcu.res_q, skb);
drivers/net/wireless/mediatek/mt76/mcu.c
52
wake_up(&dev->mcu.wait);
drivers/net/wireless/mediatek/mt76/mcu.c
88
mutex_lock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76.h
679
} mcu;
drivers/net/wireless/mediatek/mt76/mt76.h
938
struct mt76_mcu mcu;
drivers/net/wireless/mediatek/mt76/mt7603/mcu.c
233
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7603/mcu.c
46
mdev->mcu.timeout = 3 * HZ;
drivers/net/wireless/mediatek/mt76/mt7603/mcu.c
48
seq = ++mdev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7603/mcu.c
50
seq = ++mdev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
1743
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
73
dev->mt76.mcu.timeout = 20 * HZ;
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
75
seq = ++dev->mt76.mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
77
seq = ++dev->mt76.mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c
221
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
3195
dev->mcu.timeout = 20 * HZ;
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
3197
seq = ++dev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
3199
seq = ++dev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
185
usb->mcu.data = devm_kmalloc(dev->mt76.dev, MCU_RESP_URB_SIZE,
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
187
if (!usb->mcu.data)
drivers/net/wireless/mediatek/mt76/mt76x02_mcu.c
153
while ((skb = skb_dequeue(&dev->mt76.mcu.res_q)) != NULL)
drivers/net/wireless/mediatek/mt76/mt76x02_mcu.c
51
mutex_lock(&mdev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_mcu.c
53
seq = ++mdev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt76x02_mcu.c
55
seq = ++mdev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt76x02_mcu.c
76
mutex_unlock(&mdev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
120
mutex_lock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
122
mutex_unlock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
156
mutex_lock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
158
mutex_unlock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
192
mutex_lock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
194
usb->mcu.rp = data;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
195
usb->mcu.rp_len = n;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
196
usb->mcu.base = base;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
200
usb->mcu.rp = NULL;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
202
mutex_unlock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
26
WARN_ON_ONCE(len / 8 != usb->mcu.rp_len);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
28
for (i = 0; i < usb->mcu.rp_len; i++) {
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
29
u32 reg = get_unaligned_le32(data + 8 * i) - usb->mcu.base;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
32
WARN_ON_ONCE(usb->mcu.rp[i].reg != reg);
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
33
usb->mcu.rp[i].value = val;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
40
u8 *data = usb->mcu.data;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
52
if (usb->mcu.rp)
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
83
seq = ++dev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
85
seq = ++dev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c
206
usb->mcu.data = devm_kmalloc(dev->mt76.dev, MCU_RESP_URB_SIZE,
drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c
208
if (!usb->mcu.data)
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
1330
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
1445
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
1532
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
1700
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
170
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
200
mdev->mcu.timeout = 5 * HZ;
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
211
mdev->mcu.timeout = 2 * HZ;
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
214
mdev->mcu.timeout = 10 * HZ;
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
2465
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7921/pci.c
62
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c
68
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c
69
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7921/pci_mcu.c
33
mdev->mcu.timeout = 3 * HZ;
drivers/net/wireless/mediatek/mt76/mt7921/sdio.c
52
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mac.c
160
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mac.c
161
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mac.c
83
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mac.c
84
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mcu.c
36
mdev->mcu.timeout = 3 * HZ;
drivers/net/wireless/mediatek/mt76/mt7921/usb.c
45
mdev->mcu.timeout = 3 * HZ;
drivers/net/wireless/mediatek/mt76/mt7921/usb.c
97
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7921/usb.c
98
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3470
mdev->mcu.timeout = 20 * HZ;
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3472
seq = ++mdev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3474
seq = ++mdev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7925/pci.c
52
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c
84
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c
85
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c
19
mdev->mcu.timeout = 3 * HZ;
drivers/net/wireless/mediatek/mt76/mt7925/usb.c
33
mdev->mcu.timeout = 3 * HZ;
drivers/net/wireless/mediatek/mt76/mt7925/usb.c
85
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7925/usb.c
86
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt792x_usb.c
274
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt792x_usb.c
275
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt792x_usb.c
98
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
2274
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
2448
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
2552
wake_up(&dev->mt76.mcu.wait);
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
248
mdev->mcu.timeout = 5 * HZ;
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
259
mdev->mcu.timeout = 2 * HZ;
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
262
mdev->mcu.timeout = 20 * HZ;
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
284
seq = ++dev->mt76.mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
286
seq = ++dev->mt76.mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
3384
skb_queue_purge(&dev->mt76.mcu.res_q);
drivers/net/wireless/mediatek/mt76/sdio.c
433
bool mcu;
drivers/net/wireless/mediatek/mt76/sdio.c
438
mcu = q == dev->q_mcu[MT_MCUQ_WM];
drivers/net/wireless/mediatek/mt76/sdio.c
446
if (mcu) {
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
188
mt76s_tx_pick_quota(struct mt76_sdio *sdio, bool mcu, int buf_sz,
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
196
if (mcu && sdio->hw_ver == MT76_CONNAC2_SDIO)
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
199
if (mcu) {
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
215
mt76s_tx_update_quota(struct mt76_sdio *sdio, bool mcu, int pse_size,
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
218
if (mcu) {
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
248
bool mcu = q == dev->q_mcu[MT_MCUQ_WM];
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
279
if (mt76s_tx_pick_quota(sdio, mcu, e->buf_sz, &pse_sz,
drivers/net/wireless/mediatek/mt76/sdio_txrx.c
308
mt76s_tx_update_quota(sdio, mcu, pse_sz, ple_sz);
drivers/net/wireless/mediatek/mt7601u/mcu.c
124
mutex_lock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt7601u/mcu.c
128
seq = ++dev->mcu.msg_seq & 0xf;
drivers/net/wireless/mediatek/mt7601u/mcu.c
132
if (dev->mcu.resp_cmpl.done)
drivers/net/wireless/mediatek/mt7601u/mcu.c
148
mutex_unlock(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt7601u/mcu.c
495
mutex_init(&dev->mcu.mutex);
drivers/net/wireless/mediatek/mt7601u/mcu.c
514
init_completion(&dev->mcu.resp_cmpl);
drivers/net/wireless/mediatek/mt7601u/mcu.c
515
if (mt7601u_usb_alloc_buf(dev, MCU_RESP_URB_SIZE, &dev->mcu.resp)) {
drivers/net/wireless/mediatek/mt7601u/mcu.c
516
mt7601u_usb_free_buf(dev, &dev->mcu.resp);
drivers/net/wireless/mediatek/mt7601u/mcu.c
521
&dev->mcu.resp, GFP_KERNEL,
drivers/net/wireless/mediatek/mt7601u/mcu.c
522
mt7601u_complete_urb, &dev->mcu.resp_cmpl);
drivers/net/wireless/mediatek/mt7601u/mcu.c
524
mt7601u_usb_free_buf(dev, &dev->mcu.resp);
drivers/net/wireless/mediatek/mt7601u/mcu.c
533
usb_kill_urb(dev->mcu.resp.urb);
drivers/net/wireless/mediatek/mt7601u/mcu.c
534
mt7601u_usb_free_buf(dev, &dev->mcu.resp);
drivers/net/wireless/mediatek/mt7601u/mcu.c
70
struct urb *urb = dev->mcu.resp.urb;
drivers/net/wireless/mediatek/mt7601u/mcu.c
75
if (!wait_for_completion_timeout(&dev->mcu.resp_cmpl,
drivers/net/wireless/mediatek/mt7601u/mcu.c
82
rxfce = get_unaligned_le32(dev->mcu.resp.buf);
drivers/net/wireless/mediatek/mt7601u/mcu.c
86
&dev->mcu.resp, GFP_KERNEL,
drivers/net/wireless/mediatek/mt7601u/mcu.c
88
&dev->mcu.resp_cmpl);
drivers/net/wireless/mediatek/mt7601u/mt7601u.h
165
struct mt7601u_mcu mcu;
drivers/nvmem/qnap-mcu-eeprom.c
22
static int qnap_mcu_eeprom_read_block(struct qnap_mcu *mcu, unsigned int offset,
drivers/nvmem/qnap-mcu-eeprom.c
33
ret = qnap_mcu_exec(mcu, cmd, sizeof(cmd), reply, bytes + sizeof(cmd));
drivers/nvmem/qnap-mcu-eeprom.c
52
struct qnap_mcu *mcu = priv;
drivers/nvmem/qnap-mcu-eeprom.c
63
ret = qnap_mcu_eeprom_read_block(mcu, offset + pos, &buf[pos], to_read);
drivers/nvmem/qnap-mcu-eeprom.c
76
struct qnap_mcu *mcu = dev_get_drvdata(pdev->dev.parent);
drivers/nvmem/qnap-mcu-eeprom.c
92
nvcfg.priv = mcu,
drivers/perf/xgene_pmu.c
343
XGENE_PMU_EVENT_ATTR(mcu-request, 0x12),
drivers/perf/xgene_pmu.c
344
XGENE_PMU_EVENT_ATTR(mcu-rd-request, 0x13),
drivers/perf/xgene_pmu.c
345
XGENE_PMU_EVENT_ATTR(mcu-hp-rd-request, 0x14),
drivers/perf/xgene_pmu.c
346
XGENE_PMU_EVENT_ATTR(mcu-wr-request, 0x15),
drivers/perf/xgene_pmu.c
347
XGENE_PMU_EVENT_ATTR(mcu-rd-proceed-all, 0x16),
drivers/perf/xgene_pmu.c
348
XGENE_PMU_EVENT_ATTR(mcu-rd-proceed-cancel, 0x17),
drivers/perf/xgene_pmu.c
349
XGENE_PMU_EVENT_ATTR(mcu-rd-response, 0x18),
drivers/perf/xgene_pmu.c
350
XGENE_PMU_EVENT_ATTR(mcu-rd-proceed-speculative-all, 0x19),
drivers/perf/xgene_pmu.c
351
XGENE_PMU_EVENT_ATTR(mcu-rd-proceed-speculative-cancel, 0x1a),
drivers/perf/xgene_pmu.c
352
XGENE_PMU_EVENT_ATTR(mcu-wr-proceed-all, 0x1b),
drivers/perf/xgene_pmu.c
353
XGENE_PMU_EVENT_ATTR(mcu-wr-proceed-cancel, 0x1c),
drivers/perf/xgene_pmu.c
483
XGENE_PMU_EVENT_ATTR(rd-req-sent-to-mcu, 0x06),
drivers/perf/xgene_pmu.c
484
XGENE_PMU_EVENT_ATTR(rd-req-sent-to-mcu-2, 0x07),
drivers/perf/xgene_pmu.c
485
XGENE_PMU_EVENT_ATTR(rd-req-sent-to-spec-mcu, 0x08),
drivers/perf/xgene_pmu.c
486
XGENE_PMU_EVENT_ATTR(rd-req-sent-to-spec-mcu-2, 0x09),
drivers/perf/xgene_pmu.c
487
XGENE_PMU_EVENT_ATTR(glbl-ack-recv-for-rd-sent-to-spec-mcu, 0x0a),
drivers/perf/xgene_pmu.c
488
XGENE_PMU_EVENT_ATTR(glbl-ack-go-recv-for-rd-sent-to-spec-mcu, 0x0b),
drivers/perf/xgene_pmu.c
489
XGENE_PMU_EVENT_ATTR(glbl-ack-nogo-recv-for-rd-sent-to-spec-mcu, 0x0c),
drivers/perf/xgene_pmu.c
492
XGENE_PMU_EVENT_ATTR(wr-req-sent-to-mcu, 0x0f),
drivers/perf/xgene_pmu.c
499
XGENE_PMU_EVENT_ATTR(mcu-req-intf-blocked, 0x16),
drivers/perf/xgene_pmu.c
500
XGENE_PMU_EVENT_ATTR(mcb-mcu-rd-intf-stall, 0x17),
drivers/perf/xgene_pmu.c
503
XGENE_PMU_EVENT_ATTR(mcu-req-table-full, 0x1a),
drivers/perf/xgene_pmu.c
504
XGENE_PMU_EVENT_ATTR(mcu-stat-table-full, 0x1b),
drivers/perf/xgene_pmu.c
505
XGENE_PMU_EVENT_ATTR(mcu-wr-table-full, 0x1c),
drivers/perf/xgene_pmu.c
506
XGENE_PMU_EVENT_ATTR(mcu-rdreceipt-resp, 0x1d),
drivers/perf/xgene_pmu.c
507
XGENE_PMU_EVENT_ATTR(mcu-wrcomplete-resp, 0x1e),
drivers/perf/xgene_pmu.c
508
XGENE_PMU_EVENT_ATTR(mcu-retryack-resp, 0x1f),
drivers/perf/xgene_pmu.c
509
XGENE_PMU_EVENT_ATTR(mcu-pcrdgrant-resp, 0x20),
drivers/perf/xgene_pmu.c
510
XGENE_PMU_EVENT_ATTR(mcu-req-from-lastload, 0x21),
drivers/perf/xgene_pmu.c
511
XGENE_PMU_EVENT_ATTR(mcu-req-from-bypass, 0x22),
drivers/platform/cznic/turris-omnia-mcu-base.c
110
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-base.c
112
return sysfs_emit(buf, "0x%x\n", mcu->features);
drivers/platform/cznic/turris-omnia-mcu-base.c
119
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-base.c
121
return sysfs_emit(buf, "%s\n", mcu->type);
drivers/platform/cznic/turris-omnia-mcu-base.c
143
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-base.c
145
return sysfs_emit(buf, "%016llX\n", mcu->board_serial_number);
drivers/platform/cznic/turris-omnia-mcu-base.c
152
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-base.c
154
return sysfs_emit(buf, "%pM\n", mcu->board_first_mac);
drivers/platform/cznic/turris-omnia-mcu-base.c
161
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-base.c
163
return sysfs_emit(buf, "%u\n", mcu->board_revision);
drivers/platform/cznic/turris-omnia-mcu-base.c
183
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-base.c
188
!(mcu->features & OMNIA_FEAT_BOARD_INFO))
drivers/platform/cznic/turris-omnia-mcu-base.c
210
static void omnia_mcu_print_version_hash(struct omnia_mcu *mcu, bool bootloader)
drivers/platform/cznic/turris-omnia-mcu-base.c
213
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-base.c
217
err = omnia_get_version_hash(mcu, bootloader, version);
drivers/platform/cznic/turris-omnia-mcu-base.c
248
static int omnia_mcu_read_features(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-base.c
265
struct i2c_client *client = mcu->client;
drivers/platform/cznic/turris-omnia-mcu-base.c
283
&mcu->features);
drivers/platform/cznic/turris-omnia-mcu-base.c
293
mcu->features = features16;
drivers/platform/cznic/turris-omnia-mcu-base.c
295
if (mcu->features & OMNIA_FEAT_FROM_BIT_16_INVALID)
drivers/platform/cznic/turris-omnia-mcu-base.c
296
mcu->features &= GENMASK(15, 0);
drivers/platform/cznic/turris-omnia-mcu-base.c
304
mcu->type = omnia_status_to_mcu_type(status);
drivers/platform/cznic/turris-omnia-mcu-base.c
305
dev_info(dev, "MCU type %s%s\n", mcu->type,
drivers/platform/cznic/turris-omnia-mcu-base.c
306
(mcu->features & OMNIA_FEAT_PERIPH_MCU) ?
drivers/platform/cznic/turris-omnia-mcu-base.c
309
omnia_mcu_print_version_hash(mcu, true);
drivers/platform/cznic/turris-omnia-mcu-base.c
311
if (mcu->features & OMNIA_FEAT_BOOTLOADER)
drivers/platform/cznic/turris-omnia-mcu-base.c
315
omnia_mcu_print_version_hash(mcu, false);
drivers/platform/cznic/turris-omnia-mcu-base.c
318
if (mcu->features & features[i].mask)
drivers/platform/cznic/turris-omnia-mcu-base.c
332
static int omnia_mcu_read_board_info(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-base.c
337
err = omnia_cmd_read(mcu->client, OMNIA_CMD_BOARD_INFO_GET, reply,
drivers/platform/cznic/turris-omnia-mcu-base.c
345
mcu->board_serial_number = get_unaligned_le64(&reply[1]);
drivers/platform/cznic/turris-omnia-mcu-base.c
348
memcpy(mcu->board_first_mac, &reply[9], sizeof(mcu->board_first_mac));
drivers/platform/cznic/turris-omnia-mcu-base.c
350
mcu->board_revision = reply[15];
drivers/platform/cznic/turris-omnia-mcu-base.c
358
struct omnia_mcu *mcu;
drivers/platform/cznic/turris-omnia-mcu-base.c
364
mcu = devm_kzalloc(dev, sizeof(*mcu), GFP_KERNEL);
drivers/platform/cznic/turris-omnia-mcu-base.c
365
if (!mcu)
drivers/platform/cznic/turris-omnia-mcu-base.c
368
mcu->client = client;
drivers/platform/cznic/turris-omnia-mcu-base.c
369
i2c_set_clientdata(client, mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
371
err = omnia_mcu_read_features(mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
376
if (mcu->features & OMNIA_FEAT_BOARD_INFO) {
drivers/platform/cznic/turris-omnia-mcu-base.c
377
err = omnia_mcu_read_board_info(mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
383
err = omnia_mcu_register_sys_off_and_wakeup(mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
387
err = omnia_mcu_register_watchdog(mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
391
err = omnia_mcu_register_gpiochip(mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
395
err = omnia_mcu_register_keyctl(mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
399
return omnia_mcu_register_trng(mcu);
drivers/platform/cznic/turris-omnia-mcu-base.c
57
static int omnia_get_version_hash(struct omnia_mcu *mcu, bool bootloader,
drivers/platform/cznic/turris-omnia-mcu-base.c
64
err = omnia_cmd_read(mcu->client,
drivers/platform/cznic/turris-omnia-mcu-base.c
80
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-base.c
84
err = omnia_get_version_hash(mcu, bootloader, version);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1010
int omnia_mcu_register_gpiochip(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1012
bool new_api = mcu->features & OMNIA_FEAT_NEW_INT_API;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1013
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1017
err = devm_mutex_init(dev, &mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1021
mcu->gc.request = omnia_gpio_request;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1022
mcu->gc.get_direction = omnia_gpio_get_direction;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1023
mcu->gc.direction_input = omnia_gpio_direction_input;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1024
mcu->gc.direction_output = omnia_gpio_direction_output;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1025
mcu->gc.get = omnia_gpio_get;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1026
mcu->gc.get_multiple = omnia_gpio_get_multiple;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1027
mcu->gc.set = omnia_gpio_set;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1028
mcu->gc.set_multiple = omnia_gpio_set_multiple;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1029
mcu->gc.init_valid_mask = omnia_gpio_init_valid_mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1030
mcu->gc.can_sleep = true;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1031
mcu->gc.names = omnia_mcu_gpio_names;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1032
mcu->gc.base = -1;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1033
mcu->gc.ngpio = ARRAY_SIZE(omnia_gpios);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1034
mcu->gc.label = "Turris Omnia MCU GPIOs";
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1035
mcu->gc.parent = dev;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1036
mcu->gc.owner = THIS_MODULE;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1037
mcu->gc.of_gpio_n_cells = 3;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1038
mcu->gc.of_xlate = omnia_gpio_of_xlate;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1040
gpio_irq_chip_set_chip(&mcu->gc.irq, &omnia_mcu_irq_chip);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1042
mcu->gc.irq.parent_handler = NULL;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1043
mcu->gc.irq.num_parents = 0;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1044
mcu->gc.irq.parents = NULL;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1045
mcu->gc.irq.default_type = IRQ_TYPE_NONE;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1046
mcu->gc.irq.handler = handle_bad_irq;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1047
mcu->gc.irq.threaded = true;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1049
mcu->gc.irq.init_hw = omnia_irq_init_hw;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1050
mcu->gc.irq.init_valid_mask = omnia_irq_init_valid_mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1052
err = devm_gpiochip_add_data(dev, &mcu->gc, mcu);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1063
err = omnia_read_status_word_old_fw(mcu, &mcu->last_status);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1068
INIT_DELAYED_WORK(&mcu->button_release_emul_work,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1078
err = devm_request_threaded_irq(dev, mcu->client->irq, NULL,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1080
"turris-omnia-mcu", mcu);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1099
&mcu->button_release_emul_work);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1107
int omnia_mcu_request_irq(struct omnia_mcu *mcu, u32 spec,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1117
irq = gpiod_to_irq(gpio_device_get_desc(mcu->gc.gpiodev, irq_idx));
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1121
return devm_request_threaded_irq(&mcu->client->dev, irq, NULL,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
1122
thread_fn, IRQF_ONESHOT, devname, mcu);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
234
static int omnia_ctl_cmd_locked(struct omnia_mcu *mcu, u8 cmd, u16 val, u16 mask)
drivers/platform/cznic/turris-omnia-mcu-gpio.c
258
return omnia_cmd_write(mcu->client, buf, len);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
261
static int omnia_ctl_cmd(struct omnia_mcu *mcu, u8 cmd, u16 val, u16 mask)
drivers/platform/cznic/turris-omnia-mcu-gpio.c
263
guard(mutex)(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
265
return omnia_ctl_cmd_locked(mcu, cmd, val, mask);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
278
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
283
scoped_guard(mutex, &mcu->lock) {
drivers/platform/cznic/turris-omnia-mcu-gpio.c
284
val = omnia_cmd_read_bit(mcu->client,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
306
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
309
return omnia_ctl_cmd(mcu, OMNIA_CMD_EXT_CONTROL,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
323
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
335
return omnia_ctl_cmd(mcu, gpio->ctl_cmd, val, mask);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
341
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
350
!(mcu->features & OMNIA_FEAT_NEW_INT_API))
drivers/platform/cznic/turris-omnia-mcu-gpio.c
351
return test_bit(gpio->bit, &mcu->last_status);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
353
guard(mutex)(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
360
if (is_int_bit_valid(gpio) && test_bit(gpio->int_bit, &mcu->is_cached))
drivers/platform/cznic/turris-omnia-mcu-gpio.c
361
return test_bit(gpio->int_bit, &mcu->cached);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
363
return omnia_cmd_read_bit(mcu->client, gpio->cmd, BIT(gpio->bit));
drivers/platform/cznic/turris-omnia-mcu-gpio.c
386
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
387
struct i2c_client *client = mcu->client;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
401
guard(mutex)(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
403
if (mcu->features & OMNIA_FEAT_NEW_INT_API) {
drivers/platform/cznic/turris-omnia-mcu-gpio.c
414
sts = mcu->last_status;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
445
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
454
return omnia_ctl_cmd(mcu, gpio->ctl_cmd, val, mask);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
461
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
490
guard(mutex)(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
493
err = omnia_ctl_cmd_locked(mcu, OMNIA_CMD_GENERAL_CONTROL,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
500
err = omnia_ctl_cmd_locked(mcu, OMNIA_CMD_EXT_CONTROL,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
509
static bool omnia_gpio_available(struct omnia_mcu *mcu,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
513
return (mcu->features & gpio->feat_mask) == gpio->feat;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
516
return mcu->features & gpio->feat;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
525
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
532
omnia_gpio_available(mcu, gpio));
drivers/platform/cznic/turris-omnia-mcu-gpio.c
570
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
574
__clear_bit(bit, &mcu->rising);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
575
__clear_bit(bit, &mcu->falling);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
581
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
586
__clear_bit(bit, &mcu->rising);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
587
__clear_bit(bit, &mcu->mask);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
594
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
599
__set_bit(bit, &mcu->mask);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
601
__set_bit(bit, &mcu->rising);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
607
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
609
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
617
__assign_bit(bit, &mcu->rising, type & IRQ_TYPE_EDGE_RISING);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
618
__assign_bit(bit, &mcu->falling, type & IRQ_TYPE_EDGE_FALLING);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
626
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
629
if (!(mcu->features & OMNIA_FEAT_NEW_INT_API))
drivers/platform/cznic/turris-omnia-mcu-gpio.c
632
mutex_lock(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
686
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
687
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
693
if (!(mcu->features & OMNIA_FEAT_NEW_INT_API))
drivers/platform/cznic/turris-omnia-mcu-gpio.c
698
rising = mcu->rising & mcu->mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
699
falling = mcu->falling & mcu->mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
706
err = omnia_cmd_write(mcu->client, cmd, sizeof(cmd));
drivers/platform/cznic/turris-omnia-mcu-gpio.c
718
mcu->both = rising & falling;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
719
mcu->is_cached &= mcu->both;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
722
mutex_unlock(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
741
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
748
omnia_gpio_available(mcu, gpio));
drivers/platform/cznic/turris-omnia-mcu-gpio.c
756
struct omnia_mcu *mcu = gpiochip_get_data(gc);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
761
return omnia_cmd_write(mcu->client, cmd, sizeof(cmd));
drivers/platform/cznic/turris-omnia-mcu-gpio.c
776
static bool omnia_irq_read_pending_new(struct omnia_mcu *mcu,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
779
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
785
len = omnia_irq_compute_pending_length(mcu->rising & mcu->mask,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
786
mcu->falling & mcu->mask);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
790
guard(mutex)(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
792
err = omnia_cmd_read(mcu->client, OMNIA_CMD_GET_INT_AND_CLEAR, reply,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
802
rising &= mcu->mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
803
falling &= mcu->mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
807
mcu->is_cached &= ~(rising & falling);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
808
mcu->is_cached |= mcu->both & (rising ^ falling);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
809
mcu->cached = (mcu->cached | rising) & ~falling;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
814
static int omnia_read_status_word_old_fw(struct omnia_mcu *mcu,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
820
err = omnia_cmd_read_u16(mcu->client, OMNIA_CMD_GET_STATUS_WORD,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
836
struct omnia_mcu *mcu = container_of(to_delayed_work(work),
drivers/platform/cznic/turris-omnia-mcu-gpio.c
840
mcu->button_pressed_emul = false;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
841
generic_handle_irq_safe(mcu->client->irq);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
855
static bool omnia_irq_read_pending_old(struct omnia_mcu *mcu,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
859
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
862
guard(mutex)(&mcu->lock);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
864
err = omnia_read_status_word_old_fw(mcu, &status);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
895
mcu->button_pressed_emul = true;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
896
mod_delayed_work(system_wq, &mcu->button_release_emul_work,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
898
} else if (mcu->button_pressed_emul) {
drivers/platform/cznic/turris-omnia-mcu-gpio.c
902
rising_sts = ~mcu->last_status & status;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
903
falling_sts = mcu->last_status & ~status;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
905
mcu->last_status = status;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
921
rising &= mcu->rising & mcu->mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
922
falling &= mcu->falling & mcu->mask;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
928
static bool omnia_irq_read_pending(struct omnia_mcu *mcu,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
931
if (mcu->features & OMNIA_FEAT_NEW_INT_API)
drivers/platform/cznic/turris-omnia-mcu-gpio.c
932
return omnia_irq_read_pending_new(mcu, pending);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
934
return omnia_irq_read_pending_old(mcu, pending);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
939
struct omnia_mcu *mcu = dev_id;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
944
if (!omnia_irq_read_pending(mcu, &pending))
drivers/platform/cznic/turris-omnia-mcu-gpio.c
947
domain = mcu->gc.irq.domain;
drivers/platform/cznic/turris-omnia-mcu-gpio.c
965
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
968
if (mcu->features & OMNIA_FEAT_NEW_INT_API) {
drivers/platform/cznic/turris-omnia-mcu-gpio.c
969
val = omnia_cmd_read_bit(mcu->client, OMNIA_CMD_GET_STATUS_WORD,
drivers/platform/cznic/turris-omnia-mcu-gpio.c
974
val = !!(mcu->last_status & OMNIA_STS_BUTTON_MODE);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
984
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-gpio.c
991
err = omnia_ctl_cmd_locked(mcu, OMNIA_CMD_GENERAL_CONTROL,
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
107
static int omnia_mcu_read_public_key(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
112
err = omnia_cmd_read(mcu->client, OMNIA_CMD_CRYPTO_GET_PUBLIC_KEY,
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
120
memcpy(mcu->board_public_key, &reply[1],
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
126
int omnia_mcu_register_keyctl(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
128
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
132
if (!(mcu->features & OMNIA_FEAT_CRYPTO))
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
135
err = omnia_mcu_read_public_key(mcu);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
140
err = devm_mutex_init(dev, &mcu->sign_lock);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
144
init_completion(&mcu->msg_signed);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
146
err = omnia_mcu_request_irq(mcu, OMNIA_INT_MESSAGE_SIGNED,
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
154
mcu->board_serial_number);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
27
struct omnia_mcu *mcu = dev_id;
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
30
err = omnia_cmd_read(mcu->client, OMNIA_CMD_CRYPTO_COLLECT_SIGNATURE,
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
35
guard(mutex)(&mcu->sign_lock);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
37
if (mcu->sign_requested) {
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
38
mcu->sign_err = err;
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
40
memcpy(mcu->signature, &reply[1],
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
42
mcu->sign_requested = false;
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
43
complete(&mcu->msg_signed);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
52
struct omnia_mcu *mcu = dev_get_drvdata(turris_signing_key_get_dev(key));
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
56
scoped_guard(mutex, &mcu->sign_lock) {
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
57
if (mcu->sign_requested)
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
63
err = omnia_cmd_write_read(mcu->client, cmd, sizeof(cmd),
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
71
mcu->sign_requested = true;
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
74
if (wait_for_completion_interruptible(&mcu->msg_signed))
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
77
guard(mutex)(&mcu->sign_lock);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
79
if (mcu->sign_err)
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
80
return mcu->sign_err;
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
82
memcpy(signature, mcu->signature, OMNIA_MCU_CRYPTO_SIGNATURE_LEN);
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
85
memzero_explicit(mcu->signature, sizeof(mcu->signature));
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
92
struct omnia_mcu *mcu = dev_get_drvdata(turris_signing_key_get_dev(key));
drivers/platform/cznic/turris-omnia-mcu-keyctl.c
94
return mcu->board_public_key;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
111
struct omnia_mcu *mcu = data->cb_data;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
117
if (mcu->front_button_poweron)
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
134
err = omnia_cmd_write(mcu->client, cmd, sizeof(cmd));
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
136
dev_err(&mcu->client->dev,
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
144
struct omnia_mcu *mcu = data->cb_data;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
155
err = omnia_cmd_write(mcu->client, cmd, sizeof(cmd));
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
157
dev_err(&mcu->client->dev,
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
172
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
174
return sysfs_emit(buf, "%d\n", mcu->front_button_poweron);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
181
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
189
mcu->front_button_poweron = val;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
204
struct omnia_mcu *mcu = dev_get_drvdata(dev);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
206
if (mcu->features & OMNIA_FEAT_POWEROFF_WAKEUP)
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
217
int omnia_mcu_register_sys_off_and_wakeup(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
219
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
225
omnia_restart, mcu);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
234
if (!(mcu->features & OMNIA_FEAT_POWEROFF_WAKEUP))
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
239
omnia_power_off, mcu);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
244
mcu->rtcdev = devm_rtc_allocate_device(dev);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
245
if (IS_ERR(mcu->rtcdev))
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
246
return dev_err_probe(dev, PTR_ERR(mcu->rtcdev),
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
249
mcu->rtcdev->ops = &omnia_rtc_ops;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
250
mcu->rtcdev->range_max = U32_MAX;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
251
set_bit(RTC_FEATURE_ALARM_WAKEUP_ONLY, mcu->rtcdev->features);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
253
err = devm_rtc_register_device(mcu->rtcdev);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
257
mcu->front_button_poweron = true;
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
65
struct omnia_mcu *mcu = i2c_get_clientdata(client);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
74
rtc_time64_to_tm(wakeup ?: mcu->rtc_alarm, &alrm->time);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
82
struct omnia_mcu *mcu = i2c_get_clientdata(client);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
84
mcu->rtc_alarm = rtc_tm_to_time64(&alrm->time);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
88
mcu->rtc_alarm);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
96
struct omnia_mcu *mcu = i2c_get_clientdata(client);
drivers/platform/cznic/turris-omnia-mcu-sys-off-wakeup.c
99
enabled ? mcu->rtc_alarm : 0);
drivers/platform/cznic/turris-omnia-mcu-trng.c
25
struct omnia_mcu *mcu = dev_id;
drivers/platform/cznic/turris-omnia-mcu-trng.c
27
complete(&mcu->trng_entropy_ready);
drivers/platform/cznic/turris-omnia-mcu-trng.c
34
struct omnia_mcu *mcu = container_of(rng, struct omnia_mcu, trng);
drivers/platform/cznic/turris-omnia-mcu-trng.c
38
if (!wait && !completion_done(&mcu->trng_entropy_ready))
drivers/platform/cznic/turris-omnia-mcu-trng.c
42
if (wait_for_completion_interruptible(&mcu->trng_entropy_ready))
drivers/platform/cznic/turris-omnia-mcu-trng.c
45
err = omnia_cmd_read(mcu->client,
drivers/platform/cznic/turris-omnia-mcu-trng.c
59
int omnia_mcu_register_trng(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-trng.c
61
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-trng.c
65
if (!(mcu->features & OMNIA_FEAT_TRNG))
drivers/platform/cznic/turris-omnia-mcu-trng.c
74
err = omnia_cmd_read(mcu->client, OMNIA_CMD_TRNG_COLLECT_ENTROPY,
drivers/platform/cznic/turris-omnia-mcu-trng.c
79
init_completion(&mcu->trng_entropy_ready);
drivers/platform/cznic/turris-omnia-mcu-trng.c
81
err = omnia_mcu_request_irq(mcu, OMNIA_INT_TRNG, omnia_trng_irq_handler,
drivers/platform/cznic/turris-omnia-mcu-trng.c
86
mcu->trng.name = "turris-omnia-mcu-trng";
drivers/platform/cznic/turris-omnia-mcu-trng.c
87
mcu->trng.read = omnia_trng_read;
drivers/platform/cznic/turris-omnia-mcu-trng.c
89
err = devm_hwrng_register(dev, &mcu->trng);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
100
mcu->wdt.info = &omnia_wdt_info;
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
101
mcu->wdt.ops = &omnia_wdt_ops;
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
102
mcu->wdt.parent = dev;
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
103
mcu->wdt.min_timeout = 1;
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
104
mcu->wdt.max_timeout = 65535 / DECI;
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
106
mcu->wdt.timeout = WATCHDOG_TIMEOUT;
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
107
watchdog_init_timeout(&mcu->wdt, timeout, dev);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
109
watchdog_set_drvdata(&mcu->wdt, mcu);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
111
omnia_wdt_set_timeout(&mcu->wdt, mcu->wdt.timeout);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
113
err = omnia_cmd_read_u8(mcu->client, OMNIA_CMD_GET_WATCHDOG_STATE,
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
120
set_bit(WDOG_HW_RUNNING, &mcu->wdt.status);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
122
watchdog_set_nowayout(&mcu->wdt, nowayout);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
123
watchdog_stop_on_reboot(&mcu->wdt);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
124
err = devm_watchdog_register_device(dev, &mcu->wdt);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
32
struct omnia_mcu *mcu = watchdog_get_drvdata(wdt);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
34
return omnia_cmd_write_u8(mcu->client, OMNIA_CMD_SET_WATCHDOG_STATE, 1);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
39
struct omnia_mcu *mcu = watchdog_get_drvdata(wdt);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
41
return omnia_cmd_write_u8(mcu->client, OMNIA_CMD_SET_WATCHDOG_STATE, 0);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
46
struct omnia_mcu *mcu = watchdog_get_drvdata(wdt);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
48
return omnia_cmd_write_u8(mcu->client, OMNIA_CMD_SET_WATCHDOG_STATE, 1);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
54
struct omnia_mcu *mcu = watchdog_get_drvdata(wdt);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
56
return omnia_cmd_write_u16(mcu->client, OMNIA_CMD_SET_WDT_TIMEOUT,
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
62
struct omnia_mcu *mcu = watchdog_get_drvdata(wdt);
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
66
err = omnia_cmd_read_u16(mcu->client, OMNIA_CMD_GET_WDT_TIMELEFT,
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
69
dev_err(&mcu->client->dev, "Cannot get watchdog timeleft: %d\n",
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
91
int omnia_mcu_register_watchdog(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
93
struct device *dev = &mcu->client->dev;
drivers/platform/cznic/turris-omnia-mcu-watchdog.c
97
if (!(mcu->features & OMNIA_FEAT_WDT_PING))
drivers/platform/cznic/turris-omnia-mcu.h
116
int omnia_mcu_register_gpiochip(struct omnia_mcu *mcu);
drivers/platform/cznic/turris-omnia-mcu.h
117
int omnia_mcu_request_irq(struct omnia_mcu *mcu, u32 spec,
drivers/platform/cznic/turris-omnia-mcu.h
120
static inline int omnia_mcu_register_gpiochip(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu.h
127
int omnia_mcu_register_keyctl(struct omnia_mcu *mcu);
drivers/platform/cznic/turris-omnia-mcu.h
129
static inline int omnia_mcu_register_keyctl(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu.h
137
int omnia_mcu_register_sys_off_and_wakeup(struct omnia_mcu *mcu);
drivers/platform/cznic/turris-omnia-mcu.h
139
static inline int omnia_mcu_register_sys_off_and_wakeup(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu.h
146
int omnia_mcu_register_trng(struct omnia_mcu *mcu);
drivers/platform/cznic/turris-omnia-mcu.h
148
static inline int omnia_mcu_register_trng(struct omnia_mcu *mcu)
drivers/platform/cznic/turris-omnia-mcu.h
155
int omnia_mcu_register_watchdog(struct omnia_mcu *mcu);
drivers/platform/cznic/turris-omnia-mcu.h
157
static inline int omnia_mcu_register_watchdog(struct omnia_mcu *mcu)
drivers/thermal/khadas_mcu_fan.c
20
struct khadas_mcu *mcu;
drivers/thermal/khadas_mcu_fan.c
30
ret = regmap_write(ctx->mcu->regmap, KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG,
drivers/thermal/khadas_mcu_fan.c
81
struct khadas_mcu *mcu = dev_get_drvdata(pdev->dev.parent);
drivers/thermal/khadas_mcu_fan.c
90
ctx->mcu = mcu;
include/linux/mfd/qnap-mcu.h
22
int qnap_mcu_exec(struct qnap_mcu *mcu,
include/linux/mfd/qnap-mcu.h
25
int qnap_mcu_exec_with_ack(struct qnap_mcu *mcu,