/linux-6.14.4/arch/powerpc/platforms/83xx/ |
D | mcu_mpc8349emitx.c | 3 * Power Management and GPIO expander driver for MPC8349E-mITX-compatible MCU 24 * I don't have specifications for the MCU firmware, I found this register 33 struct mcu { struct 40 static struct mcu *glob_mcu; argument 46 struct mcu *mcu = glob_mcu; in shutdown_thread_fn() local 49 ret = i2c_smbus_read_byte_data(mcu->client, MCU_REG_CTRL); in shutdown_thread_fn() 51 pr_err("MCU status reg read failed.\n"); in shutdown_thread_fn() 52 mcu->reg_ctrl = ret; in shutdown_thread_fn() 55 if (mcu->reg_ctrl & MCU_CTRL_BTN) { in shutdown_thread_fn() 56 i2c_smbus_write_byte_data(mcu->client, MCU_REG_CTRL, in shutdown_thread_fn() [all …]
|
/linux-6.14.4/drivers/platform/cznic/ |
D | turris-omnia-mcu-watchdog.c | 3 * CZ.NIC's Turris Omnia MCU watchdog driver 16 #include <linux/turris-omnia-mcu-interface.h> 17 #include "turris-omnia-mcu.h" 32 struct omnia_mcu *mcu = watchdog_get_drvdata(wdt); in omnia_wdt_start() local 34 return omnia_cmd_write_u8(mcu->client, OMNIA_CMD_SET_WATCHDOG_STATE, 1); in omnia_wdt_start() 39 struct omnia_mcu *mcu = watchdog_get_drvdata(wdt); in omnia_wdt_stop() local 41 return omnia_cmd_write_u8(mcu->client, OMNIA_CMD_SET_WATCHDOG_STATE, 0); in omnia_wdt_stop() 46 struct omnia_mcu *mcu = watchdog_get_drvdata(wdt); in omnia_wdt_ping() local 48 return omnia_cmd_write_u8(mcu->client, OMNIA_CMD_SET_WATCHDOG_STATE, 1); in omnia_wdt_ping() 54 struct omnia_mcu *mcu = watchdog_get_drvdata(wdt); in omnia_wdt_set_timeout() local [all …]
|
D | turris-omnia-mcu-base.c | 3 * CZ.NIC's Turris Omnia MCU driver 19 #include <linux/turris-omnia-mcu-interface.h> 20 #include "turris-omnia-mcu.h" 57 static int omnia_get_version_hash(struct omnia_mcu *mcu, bool bootloader, in omnia_get_version_hash() argument 64 err = omnia_cmd_read(mcu->client, in omnia_get_version_hash() 80 struct omnia_mcu *mcu = dev_get_drvdata(dev); in fw_version_hash_show() local 84 err = omnia_get_version_hash(mcu, bootloader, version); in fw_version_hash_show() 110 struct omnia_mcu *mcu = dev_get_drvdata(dev); in fw_features_show() local 112 return sysfs_emit(buf, "0x%x\n", mcu->features); in fw_features_show() 119 struct omnia_mcu *mcu = dev_get_drvdata(dev); in mcu_type_show() local [all …]
|
D | turris-omnia-mcu-gpio.c | 3 * CZ.NIC's Turris Omnia MCU GPIO and IRQ driver 25 #include <linux/turris-omnia-mcu-interface.h> 26 #include "turris-omnia-mcu.h" 233 static int omnia_ctl_cmd_locked(struct omnia_mcu *mcu, u8 cmd, u16 val, u16 mask) in omnia_ctl_cmd_locked() argument 257 return omnia_cmd_write(mcu->client, buf, len); in omnia_ctl_cmd_locked() 260 static int omnia_ctl_cmd(struct omnia_mcu *mcu, u8 cmd, u16 val, u16 mask) in omnia_ctl_cmd() argument 262 guard(mutex)(&mcu->lock); in omnia_ctl_cmd() 264 return omnia_ctl_cmd_locked(mcu, cmd, val, mask); in omnia_ctl_cmd() 277 struct omnia_mcu *mcu = gpiochip_get_data(gc); in omnia_gpio_get_direction() local 282 scoped_guard(mutex, &mcu->lock) { in omnia_gpio_get_direction() [all …]
|
D | turris-omnia-mcu-sys-off-wakeup.c | 3 * CZ.NIC's Turris Omnia MCU system off and RTC wakeup driver 6 * real-time clock), rather the MCU implements a wakeup from powered off state 7 * at a specified time relative to MCU boot, and we expose this feature via RTC 25 #include <linux/turris-omnia-mcu-interface.h> 26 #include "turris-omnia-mcu.h" 65 struct omnia_mcu *mcu = i2c_get_clientdata(client); in omnia_read_alarm() local 74 rtc_time64_to_tm(wakeup ?: mcu->rtc_alarm, &alrm->time); in omnia_read_alarm() 82 struct omnia_mcu *mcu = i2c_get_clientdata(client); in omnia_set_alarm() local 84 mcu->rtc_alarm = rtc_tm_to_time64(&alrm->time); in omnia_set_alarm() 88 mcu->rtc_alarm); in omnia_set_alarm() [all …]
|
D | turris-omnia-mcu-trng.c | 3 * CZ.NIC's Turris Omnia MCU TRNG driver 21 #include <linux/turris-omnia-mcu-interface.h> 22 #include "turris-omnia-mcu.h" 28 struct omnia_mcu *mcu = dev_id; in omnia_trng_irq_handler() local 30 complete(&mcu->trng_entropy_ready); in omnia_trng_irq_handler() 37 struct omnia_mcu *mcu = container_of(rng, struct omnia_mcu, trng); in omnia_trng_read() local 41 if (!wait && !completion_done(&mcu->trng_entropy_ready)) in omnia_trng_read() 45 if (wait_for_completion_interruptible(&mcu->trng_entropy_ready)) in omnia_trng_read() 48 err = omnia_cmd_read(mcu->client, in omnia_trng_read() 62 int omnia_mcu_register_trng(struct omnia_mcu *mcu) in omnia_mcu_register_trng() argument [all …]
|
D | turris-omnia-mcu.h | 3 * CZ.NIC's Turris Omnia MCU driver 26 * @type: MCU type (STM32, GD32, MKL, or unknown) 27 * @features: bitmap of features supported by the MCU firmware 28 * @board_serial_number: board serial number, if stored in MCU 29 * @board_first_mac: board first MAC address, if stored in MCU 30 * @board_revision: board revision, if stored in MCU 41 * @button_release_emul_work: front button release emulation work, used with old MCU firmware 45 * determine which interrupt events occurred, used with old MCU 52 * @rtc_alarm: RTC alarm that was set for the board to wake up on, in MCU time 53 * (seconds since last MCU reset) [all …]
|
D | Makefile | 3 obj-$(CONFIG_TURRIS_OMNIA_MCU) += turris-omnia-mcu.o 4 turris-omnia-mcu-y := turris-omnia-mcu-base.o 5 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_GPIO) += turris-omnia-mcu-gpio.o 6 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_SYSOFF_WAKEUP) += turris-omnia-mcu-sys-off-wakeup.o 7 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_TRNG) += turris-omnia-mcu-trng.o 8 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_WATCHDOG) += turris-omnia-mcu-watchdog.o
|
D | Kconfig | 17 tristate "Turris Omnia MCU driver" 26 called turris-omnia-mcu. 31 bool "Turris Omnia MCU GPIOs" 37 Say Y here to add support for controlling MCU GPIO pins and receiving 38 MCU interrupts on CZ.NIC's Turris Omnia. 53 bool "Turris Omnia MCU system off and RTC wakeup" 62 bool "Turris Omnia MCU watchdog" 68 Omnia MCU. 71 bool "Turris Omnia MCU true random number generator" 77 provided by CZ.NIC's Turris Omnia MCU.
|
/linux-6.14.4/drivers/mfd/ |
D | qnap-mcu.c | 12 #include <linux/mfd/qnap-mcu.h> 57 * @version: MCU firmware version 68 * The QNAP-MCU uses a basic XOR checksum. 81 static int qnap_mcu_write(struct qnap_mcu *mcu, const u8 *data, u8 data_size) in qnap_mcu_write() argument 87 dev_err(&mcu->serdev->dev, "data too big for transmit buffer"); in qnap_mcu_write() 94 serdev_device_write_flush(mcu->serdev); in qnap_mcu_write() 96 return serdev_device_write(mcu->serdev, tx, length, HZ); in qnap_mcu_write() 102 struct qnap_mcu *mcu = dev_get_drvdata(dev); in qnap_mcu_receive_buf() local 103 struct qnap_mcu_reply *reply = &mcu->reply; in qnap_mcu_receive_buf() 145 int qnap_mcu_exec(struct qnap_mcu *mcu, in qnap_mcu_exec() argument [all …]
|
/linux-6.14.4/drivers/hwmon/ |
D | sg2042-mcu.c | 5 * Sophgo power control mcu for SG2042 17 /* fixed MCU registers */ 41 struct sg2042_mcu_data *mcu = seqf->private; \ 43 ret = i2c_smbus_read_byte_data(mcu->client, (_reg)); \ 63 struct sg2042_mcu_data *mcu = dev_get_drvdata(dev); in reset_count_show() local 66 ret = i2c_smbus_read_byte_data(mcu->client, REG_RST_COUNT); in reset_count_show() 77 struct sg2042_mcu_data *mcu = dev_get_drvdata(dev); in uptime_show() local 81 ret = i2c_smbus_read_i2c_block_data(mcu->client, REG_UPTIME, in uptime_show() 94 struct sg2042_mcu_data *mcu = dev_get_drvdata(dev); in reset_reason_show() local 97 ret = i2c_smbus_read_byte_data(mcu->client, REG_RESET_REASON); in reset_reason_show() [all …]
|
D | qnap-mcu-hwmon.c | 4 * Driver for hwmon elements found on QNAP-MCU devices 11 #include <linux/mfd/qnap-mcu.h> 18 struct qnap_mcu *mcu; member 40 ret = qnap_mcu_exec(hwm->mcu, cmd, sizeof(cmd), reply, sizeof(reply)); in qnap_mcu_hwmon_get_rpm() 58 ret = qnap_mcu_exec(hwm->mcu, cmd, sizeof(cmd), reply, sizeof(reply)); in qnap_mcu_hwmon_get_pwm() 74 return qnap_mcu_exec_with_ack(hwm->mcu, cmd, sizeof(cmd)); in qnap_mcu_hwmon_set_pwm() 84 ret = qnap_mcu_exec(hwm->mcu, cmd, sizeof(cmd), reply, sizeof(reply)); in qnap_mcu_hwmon_get_temp() 295 struct qnap_mcu *mcu = dev_get_drvdata(pdev->dev.parent); in qnap_mcu_hwmon_probe() local 307 hwm->mcu = mcu; in qnap_mcu_hwmon_probe() 342 to_of_node(hwm->fan_node), "qnap-mcu-hwmon", in qnap_mcu_hwmon_probe() [all …]
|
/linux-6.14.4/drivers/leds/ |
D | leds-qnap-mcu.c | 3 * Driver for LEDs found on QNAP MCU devices 9 #include <linux/mfd/qnap-mcu.h> 23 struct qnap_mcu *mcu; member 49 return qnap_mcu_exec_with_ack(err_led->mcu, cmd, sizeof(cmd)); in qnap_mcu_err_led_set() 75 return qnap_mcu_exec_with_ack(err_led->mcu, cmd, sizeof(cmd)); in qnap_mcu_err_led_blink_set() 78 static int qnap_mcu_register_err_led(struct device *dev, struct qnap_mcu *mcu, int num_err_led) in qnap_mcu_register_err_led() argument 87 err_led->mcu = mcu; in qnap_mcu_register_err_led() 113 struct qnap_mcu *mcu; member 142 return qnap_mcu_exec_with_ack(usb_led->mcu, cmd, sizeof(cmd)); in qnap_mcu_usb_led_set() 166 return qnap_mcu_exec_with_ack(usb_led->mcu, cmd, sizeof(cmd)); in qnap_mcu_usb_led_blink_set() [all …]
|
/linux-6.14.4/drivers/net/wireless/mediatek/mt76/ |
D | mt76x02_usb_mcu.c | 26 WARN_ON_ONCE(len / 8 != usb->mcu.rp_len); in mt76x02u_multiple_mcu_reads() 28 for (i = 0; i < usb->mcu.rp_len; i++) { in mt76x02u_multiple_mcu_reads() 29 u32 reg = get_unaligned_le32(data + 8 * i) - usb->mcu.base; in mt76x02u_multiple_mcu_reads() 32 WARN_ON_ONCE(usb->mcu.rp[i].reg != reg); in mt76x02u_multiple_mcu_reads() 33 usb->mcu.rp[i].value = val; in mt76x02u_multiple_mcu_reads() 40 u8 *data = usb->mcu.data; in mt76x02u_mcu_wait_resp() 52 if (usb->mcu.rp) in mt76x02u_mcu_wait_resp() 60 dev_err(dev->dev, "error: MCU resp evt:%lx seq:%hhx-%lx\n", in mt76x02u_mcu_wait_resp() 83 seq = ++dev->mcu.msg_seq & 0xf; in __mt76x02u_mcu_send_msg() 85 seq = ++dev->mcu.msg_seq & 0xf; in __mt76x02u_mcu_send_msg() [all …]
|
D | mcu.c | 41 wait_event_timeout(dev->mcu.wait, in mt76_mcu_get_response() 42 (!skb_queue_empty(&dev->mcu.res_q) || in mt76_mcu_get_response() 45 return skb_dequeue(&dev->mcu.res_q); in mt76_mcu_get_response() 51 skb_queue_tail(&dev->mcu.res_q, skb); in mt76_mcu_rx_event() 52 wake_up(&dev->mcu.wait); in mt76_mcu_rx_event() 84 mutex_lock(&dev->mcu.mutex); in mt76_mcu_skb_send_and_get_msg() 106 expires = jiffies + dev->mcu.timeout; in mt76_mcu_skb_send_and_get_msg() 128 mutex_unlock(&dev->mcu.mutex); in mt76_mcu_skb_send_and_get_msg()
|
/linux-6.14.4/Documentation/devicetree/bindings/iio/ |
D | samsung,sensorhub-rinato.yaml | 13 Sensorhub is a MCU which manages several sensors and also plays the role 28 ap-mcu-gpios: 33 mcu-ap-gpios: 38 mcu-reset-gpios: 47 - ap-mcu-gpios 48 - mcu-ap-gpios 49 - mcu-reset-gpios 68 ap-mcu-gpios = <&gpx0 0 0>; 69 mcu-ap-gpios = <&gpx0 4 0>; 70 mcu-reset-gpios = <&gpx0 5 0>;
|
/linux-6.14.4/drivers/input/misc/ |
D | qnap-mcu-input.c | 10 #include <linux/mfd/qnap-mcu.h> 24 struct qnap_mcu *mcu; member 39 ret = qnap_mcu_exec(idev->mcu, cmd, sizeof(cmd), reply, sizeof(reply)); in qnap_mcu_input_poll() 60 qnap_mcu_exec_with_ack(idev->mcu, cmd, sizeof(cmd)); in qnap_mcu_input_beeper_work() 74 /* beep runtime is determined by the MCU */ in qnap_mcu_input_event() 94 struct qnap_mcu *mcu = dev_get_drvdata(pdev->dev.parent); in qnap_mcu_input_probe() local 110 idev->mcu = mcu; in qnap_mcu_input_probe() 114 input->name = "qnap-mcu"; in qnap_mcu_input_probe() 115 input->phys = "qnap-mcu-input/input0"; in qnap_mcu_input_probe() 145 .name = "qnap-mcu-input", [all …]
|
/linux-6.14.4/drivers/thermal/ |
D | khadas_mcu_fan.c | 3 * Khadas MCU Controlled FAN driver 12 #include <linux/mfd/khadas-mcu.h> 20 struct khadas_mcu *mcu; member 30 ret = regmap_write(ctx->mcu->regmap, KHADAS_MCU_CMD_FAN_STATUS_CTRL_REG, in khadas_mcu_fan_set_level() 81 struct khadas_mcu *mcu = dev_get_drvdata(pdev->dev.parent); in khadas_mcu_fan_probe() local 90 ctx->mcu = mcu; in khadas_mcu_fan_probe() 94 dev->parent->of_node, "khadas-mcu-fan", ctx, in khadas_mcu_fan_probe() 98 dev_err(dev, "Failed to register khadas-mcu-fan as cooling device: %d\n", in khadas_mcu_fan_probe() 142 { .name = "khadas-mcu-fan-ctrl", }, 151 .name = "khadas-mcu-fan-ctrl", [all …]
|
/linux-6.14.4/drivers/net/wireless/mediatek/mt7601u/ |
D | mcu.c | 16 #include "mcu.h" 70 struct urb *urb = dev->mcu.resp.urb; in mt7601u_mcu_wait_resp() 75 if (!wait_for_completion_timeout(&dev->mcu.resp_cmpl, in mt7601u_mcu_wait_resp() 82 rxfce = get_unaligned_le32(dev->mcu.resp.buf); in mt7601u_mcu_wait_resp() 86 &dev->mcu.resp, GFP_KERNEL, in mt7601u_mcu_wait_resp() 88 &dev->mcu.resp_cmpl); in mt7601u_mcu_wait_resp() 93 dev_err(dev->dev, "Error: MCU resp urb failed:%d\n", in mt7601u_mcu_wait_resp() 100 dev_err(dev->dev, "Error: MCU resp evt:%lx seq:%hhx-%lx!\n", in mt7601u_mcu_wait_resp() 124 mutex_lock(&dev->mcu.mutex); in mt7601u_mcu_msg_send() 128 seq = ++dev->mcu.msg_seq & 0xf; in mt7601u_mcu_msg_send() [all …]
|
/linux-6.14.4/Documentation/devicetree/bindings/thermal/ |
D | mediatek,lvts-thermal.yaml | 24 - mediatek,mt8188-lvts-mcu 26 - mediatek,mt8192-lvts-mcu 28 - mediatek,mt8195-lvts-mcu 41 description: LVTS reset for clearing temporary data on AP/MCU. 67 - mediatek,mt8188-lvts-mcu 69 - mediatek,mt8192-lvts-mcu 85 - mediatek,mt8195-lvts-mcu 117 compatible = "mediatek,mt8195-lvts-mcu";
|
/linux-6.14.4/Documentation/devicetree/bindings/powerpc/fsl/ |
D | mcu-mpc8349emitx.txt | 1 Freescale MPC8349E-mITX-compatible Power Management Micro Controller Unit (MCU) 4 - compatible : "fsl,<mcu-chip>-<board>", "fsl,mcu-mpc8349emitx". 11 mcu@a { 14 "fsl,mcu-mpc8349emitx";
|
/linux-6.14.4/Documentation/hwmon/ |
D | sg2042-mcu.rst | 3 Kernel driver sg2042-mcu 8 * Onboard MCU for sg2042 12 Prefix: 'sg2042-mcu' 21 This driver supprts hardware monitoring for onboard MCU with 46 (the MCU device is in i2c subsystem): 52 uptime RO Seconds after the MCU is powered 69 data in ``/sys/kernel/debug/sg2042-mcu/*/``. 74 firmware_version 0x%02x firmware version of the MCU 77 mcu_type %d type of the MCU: 0 is STM32, 1 is GD32
|
/linux-6.14.4/Documentation/devicetree/bindings/hwmon/ |
D | nsa320-mcu.txt | 5 - compatible : "zyxel,nsa320-mcu" 6 - data-gpios : The GPIO pin connected to the data line on the MCU 7 - clk-gpios : The GPIO pin connected to the clock line on the MCU 8 - act-gpios : The GPIO pin connected to the active line on the MCU 13 compatible = "zyxel,nsa320-mcu";
|
/linux-6.14.4/Documentation/devicetree/bindings/firmware/ |
D | cznic,turris-omnia-mcu.yaml | 4 $id: http://devicetree.org/schemas/firmware/cznic,turris-omnia-mcu.yaml# 7 title: CZ.NIC's Turris Omnia MCU 13 The MCU on Turris Omnia acts as a system controller providing additional 18 const: cznic,turris-omnia-mcu 21 description: MCU I2C slave address 74 compatible = "cznic,turris-omnia-mcu";
|
/linux-6.14.4/drivers/net/ethernet/mediatek/ |
D | mtk_wed_mcu.c | 69 wait_event_timeout(wo->mcu.wait, !skb_queue_empty(&wo->mcu.res_q), in mtk_wed_mcu_get_response() 71 return skb_dequeue(&wo->mcu.res_q); in mtk_wed_mcu_get_response() 76 skb_queue_tail(&wo->mcu.res_q, skb); in mtk_wed_mcu_rx_event() 77 wake_up(&wo->mcu.wait); in mtk_wed_mcu_rx_event() 140 wo->mcu.timeout = 20 * HZ; in mtk_wed_mcu_skb_send_msg() 147 u16 seq = ++wo->mcu.seq; in mtk_wed_mcu_skb_send_msg() 150 seq = ++wo->mcu.seq; in mtk_wed_mcu_skb_send_msg() 202 mutex_lock(&wo->mcu.mutex); in mtk_wed_mcu_send_msg() 208 expires = jiffies + wo->mcu.timeout; in mtk_wed_mcu_send_msg() 216 mutex_unlock(&wo->mcu.mutex); in mtk_wed_mcu_send_msg() [all …]
|