| /linux/arch/powerpc/platforms/83xx/ |
| H A 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/drivers/platform/cznic/ |
| H A 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 …]
|
| H A 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 …]
|
| H A D | turris-omnia-mcu-keyctl.c | 3 * CZ.NIC's Turris Omnia MCU ECDSA message signing via keyctl 20 #include <linux/turris-omnia-mcu-interface.h> 22 #include "turris-omnia-mcu.h" 27 struct omnia_mcu *mcu = dev_id; in omnia_msg_signed_irq_handler() local 30 err = omnia_cmd_read(mcu->client, OMNIA_CMD_CRYPTO_COLLECT_SIGNATURE, in omnia_msg_signed_irq_handler() 35 guard(mutex)(&mcu->sign_lock); in omnia_msg_signed_irq_handler() 37 if (mcu->sign_requested) { in omnia_msg_signed_irq_handler() 38 mcu->sign_err = err; in omnia_msg_signed_irq_handler() 40 memcpy(mcu->signature, &reply[1], in omnia_msg_signed_irq_handler() 42 mcu->sign_requested = false; in omnia_msg_signed_irq_handler() [all …]
|
| H A 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 …]
|
| H A D | turris-omnia-mcu-trng.c | 3 * CZ.NIC's Turris Omnia MCU TRNG driver 18 #include <linux/turris-omnia-mcu-interface.h> 19 #include "turris-omnia-mcu.h" 25 struct omnia_mcu *mcu = dev_id; in omnia_trng_irq_handler() local 27 complete(&mcu->trng_entropy_ready); in omnia_trng_irq_handler() 34 struct omnia_mcu *mcu = container_of(rng, struct omnia_mcu, trng); in omnia_trng_read() local 38 if (!wait && !completion_done(&mcu->trng_entropy_ready)) in omnia_trng_read() 42 if (wait_for_completion_interruptible(&mcu->trng_entropy_ready)) in omnia_trng_read() 45 err = omnia_cmd_read(mcu->client, in omnia_trng_read() 59 int omnia_mcu_register_trng(struct omnia_mcu *mcu) in omnia_mcu_register_trng() argument [all …]
|
| H A D | turris-omnia-mcu.h | 3 * CZ.NIC's Turris Omnia MCU driver 32 * @type: MCU type (STM32, GD32, MKL, or unknown) 33 * @features: bitmap of features supported by the MCU firmware 34 * @board_serial_number: board serial number, if stored in MCU 35 * @board_first_mac: board first MAC address, if stored in MCU 36 * @board_revision: board revision, if stored in MCU 47 * @button_release_emul_work: front button release emulation work, used with old MCU firmware 51 * determine which interrupt events occurred, used with old MCU 58 * @rtc_alarm: RTC alarm that was set for the board to wake up on, in MCU time 59 * (seconds since last MCU reset) [all …]
|
| H A 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_KEYCTL) += turris-omnia-mcu-keyctl.o 7 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_SYSOFF_WAKEUP) += turris-omnia-mcu-sys-off-wakeup.o 8 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_TRNG) += turris-omnia-mcu-trng.o 9 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_WATCHDOG) += turris-omnia-mcu-watchdog.o
|
| H A 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. [all …]
|
| /linux/Documentation/devicetree/bindings/net/pse-pd/ |
| H A D | realtek,pse-mcu-gen1.yaml | 4 $id: http://devicetree.org/schemas/net/pse-pd/realtek,pse-mcu-gen1.yaml# 7 title: Realtek PSE MCU 13 A microcontroller (MCU) that manages the PSE (Power Sourcing Equipment) 15 this MCU - over I2C/SMBus or UART - using a small message-based protocol; 16 the PSE silicon it drives sits behind the MCU and is never accessed 17 directly. For example, on the Zyxel GS1900-10HP the SoC reaches the MCU 18 over UART, and the MCU manages the on-board PSE chip. 20 This binding describes the MCU together with its Realtek firmware: the 23 PSE silicon behind the MCU (Realtek RTL823x/RTL8239* or Broadcom 24 BCM59xxx) is reported by the MCU and detected at runtime - neither is [all …]
|
| /linux/Documentation/devicetree/bindings/iio/ |
| H A 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/drivers/input/misc/ |
| H A 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/drivers/net/pse-pd/ |
| H A D | Kconfig | 19 Shared core for the Realtek PSE MCU driver. This is selected 23 tristate "Realtek PSE MCU driver (I2C transport)" 27 Driver for the microcontroller (MCU) that fronts the PSE 29 via I2C/SMBus. The MCU exposes a message-based protocol; the actual 31 module, choose M here: the module will be called realtek-pse-mcu-i2c. 34 tristate "Realtek PSE MCU driver (UART transport)" 38 Driver for the microcontroller (MCU) that fronts the PSE 40 via UART. The MCU exposes a message-based protocol; the actual PSE 42 module, choose M here: the module will be called realtek-pse-mcu-uart.
|
| H A D | realtek-pse-mcu.h | 11 * Time the MCU itself needs between accepting a request and having a 12 * response ready. These are properties of the MCU firmware, not of the 22 * Total time to keep retrying the first MCU read at probe, and the pause 23 * between attempts. Right after reset-gpios is deasserted the MCU may not 40 * MCU status opcodes (seen on the Gen1 dialect; Gen2 never emits them). 50 * terminal errors match unconditionally, as a request the MCU couldn't parse 61 /* Opaque to transports; defined in realtek-pse-mcu-core.c. */ 81 struct mutex mutex; /* serializes MCU request/response transactions */ 85 u8 seq; /* rolling request seq_num, echoed by the MCU */
|
| H A D | realtek-pse-mcu-i2c.c | 9 #include "realtek-pse-mcu.h" 14 * MCU produces more slowly, keep polling at the typical response cadence 39 /* MCU needs 0x00 as command byte for read */ in rtpse_mcu_i2c_smbus_recv() 109 "plain-I2C MCU protocol requires I2C-capable adapter\n"); in rtpse_mcu_i2c_probe() 115 "SMBus MCU protocol requires SMBus I2C-block support\n"); in rtpse_mcu_i2c_probe() 130 { .compatible = "realtek,pse-mcu-gen1-smbus", .data = &rtpse_mcu_gen1_data }, 131 { .compatible = "realtek,pse-mcu-gen2-smbus", .data = &rtpse_mcu_gen2_data }, 132 { .compatible = "realtek,pse-mcu-gen2-i2c", .data = &rtpse_mcu_gen2_i2c_data }, 139 .name = "realtek-pse-mcu-i2c", 147 MODULE_DESCRIPTION("Realtek PSE MCU driver (I2C transport)");
|
| H A D | realtek-pse-mcu-core.c | 3 * Driver for the microcontroller (MCU) fronting PSE silicon on various 4 * Realtek-based managed switches. The MCU speaks a 12-byte fixed-frame 9 * actual PSE silicon: the host CPU talks to the MCU over I2C/SMBus or 10 * UART, and the MCU in turn manages the PSE chips on the board. The MCU 12 * accessed directly; everything goes through MCU commands. 16 * the MCU fronts and manages Broadcom PSE silicon; Gen2 being used with 22 * without a management MCU, MCU designs that speak an unrelated protocol 25 * This core module implements the protocol, decoding/encoding of MCU 27 * (realtek-pse-mcu-i2c, realtek-pse-mcu-uart) provide the send/recv 43 #include "realtek-pse-mcu.h" [all …]
|
| /linux/drivers/nvmem/ |
| H A D | qnap-mcu-eeprom.c | 12 #include <linux/mfd/qnap-mcu.h> 22 static int qnap_mcu_eeprom_read_block(struct qnap_mcu *mcu, unsigned int offset, in qnap_mcu_eeprom_read_block() argument 33 ret = qnap_mcu_exec(mcu, cmd, sizeof(cmd), reply, bytes + sizeof(cmd)); in qnap_mcu_eeprom_read_block() 52 struct qnap_mcu *mcu = priv; in qnap_mcu_eeprom_read() local 63 ret = qnap_mcu_eeprom_read_block(mcu, offset + pos, &buf[pos], to_read); in qnap_mcu_eeprom_read() 76 struct qnap_mcu *mcu = dev_get_drvdata(pdev->dev.parent); in qnap_mcu_eeprom_probe() local 92 nvcfg.priv = mcu; in qnap_mcu_eeprom_probe() 104 .name = "qnap-mcu-eeprom", 110 MODULE_DESCRIPTION("QNAP MCU EEPROM driver");
|
| /linux/Documentation/devicetree/bindings/thermal/ |
| H A D | mediatek,lvts-thermal.yaml | 25 - mediatek,mt8188-lvts-mcu 27 - mediatek,mt8192-lvts-mcu 29 - mediatek,mt8195-lvts-mcu 31 - mediatek,mt8196-lvts-mcu 44 description: LVTS reset for clearing temporary data on AP/MCU. 70 - mediatek,mt8188-lvts-mcu 72 - mediatek,mt8192-lvts-mcu 88 - mediatek,mt8195-lvts-mcu 104 - mediatek,mt8196-lvts-mcu 131 compatible = "mediatek,mt8195-lvts-mcu";
|
| /linux/Documentation/devicetree/bindings/mfd/ |
| H A D | khadas,mcu.yaml | 4 $id: http://devicetree.org/schemas/mfd/khadas,mcu.yaml# 20 - khadas,mcu # MCU revision is discoverable 21 - khadas,vim4-mcu # Different MCU variant, not discoverable 41 const: khadas,vim4-mcu 57 compatible = "khadas,mcu";
|
| /linux/arch/arm64/boot/dts/ti/ |
| H A D | k3-am62a.dtsi | 65 system_mcu_only: system-mcu-only { 67 idle-state-name = "mem-mcu-active"; 111 /* MCU Domain Range */ 113 <0x00 0x79000000 0x00 0x79000000 0x00 0x00008000>, /* MCU R5 ATCM */ 114 <0x00 0x79020000 0x00 0x79020000 0x00 0x00008000>, /* MCU R5 BTCM */ 115 <0x00 0x79100000 0x00 0x79100000 0x00 0x00040000>, /* MCU R5 IRAM0 */ 116 <0x00 0x79140000 0x00 0x79140000 0x00 0x00040000>, /* MCU R5 IRAM1 */ 130 <0x00 0x79000000 0x00 0x79000000 0x00 0x00008000>, /* MCU R5 ATCM */ 131 <0x00 0x79020000 0x00 0x79020000 0x00 0x00008000>, /* MCU R5 BTCM */ 132 <0x00 0x79100000 0x00 0x79100000 0x00 0x00040000>, /* MCU IRAM0 */ [all …]
|
| /linux/Documentation/devicetree/bindings/firmware/ |
| H A 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/drivers/net/wireless/mediatek/mt76/ |
| H A 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() 114 expires = jiffies + dev->mcu.timeout; in mt76_mcu_skb_send_and_get_msg() 136 mutex_unlock(&dev->mcu.mutex); in mt76_mcu_skb_send_and_get_msg()
|
| /linux/drivers/clk/sunxi-ng/ |
| H A D | ccu-sun55i-a523-mcu.c | 14 #include <dt-bindings/clock/sun55i-a523-mcu-ccu.h> 15 #include <dt-bindings/reset/sun55i-a523-mcu-ccu.h> 93 static SUNXI_CCU_M_DATA_WITH_MUX_GATE(dsp_clk, "mcu-dsp", dsp_parents, 0x0020, 211 static SUNXI_CCU_P_DATA_WITH_MUX_GATE(mcu_timer0_clk, "mcu-timer0", timer_parents, 217 static SUNXI_CCU_P_DATA_WITH_MUX_GATE(mcu_timer1_clk, "mcu-timer1", timer_parents, 223 static SUNXI_CCU_P_DATA_WITH_MUX_GATE(mcu_timer2_clk, "mcu-timer2", timer_parents, 229 static SUNXI_CCU_P_DATA_WITH_MUX_GATE(mcu_timer3_clk, "mcu-timer3", timer_parents, 235 static SUNXI_CCU_P_DATA_WITH_MUX_GATE(mcu_timer4_clk, "mcu-timer4", timer_parents, 241 static SUNXI_CCU_P_DATA_WITH_MUX_GATE(mcu_timer5_clk, "mcu-timer5", timer_parents, 247 static SUNXI_CCU_GATE_DATA(bus_mcu_timer_clk, "bus-mcu-timer", ahb, 0x08c, BIT(0), 0); [all …]
|
| /linux/drivers/mfd/ |
| H A D | khadas-mcu.c | 12 #include <linux/mfd/khadas-mcu.h> 80 { .name = "khadas-mcu-fan-ctrl", }, 84 { .name = "khadas-mcu-user-mem", }, 126 { .compatible = "khadas,mcu", }, 134 .name = "khadas-mcu-core", 141 MODULE_DESCRIPTION("Khadas MCU core driver");
|
| /linux/Documentation/ABI/testing/ |
| H A D | sysfs-bus-i2c-devices-turris-omnia-mcu | 7 Only available if board information is burned in the MCU (older 20 Only available if board information is burned in the MCU (older 35 - ``mcu`` makes the button press event be handled by the MCU to 63 MCU firmware is too old, this file reads 0x0. 110 Only available if board information is burned in the MCU (older
|