| /kernel/linux/linux-5.10/drivers/net/dsa/ |
| D | realtek-smi-core.c | 2 /* Realtek Simple Management Interface (SMI) driver 5 * The SMI protocol piggy-backs the MDIO MDC and MDIO signals levels 19 * RTL8370 - Also uses SMI 43 #include "realtek-smi-core.h" 49 static inline void realtek_smi_clk_delay(struct realtek_smi *smi) in realtek_smi_clk_delay() argument 51 ndelay(smi->clk_delay); in realtek_smi_clk_delay() 54 static void realtek_smi_start(struct realtek_smi *smi) in realtek_smi_start() argument 59 gpiod_direction_output(smi->mdc, 0); in realtek_smi_start() 60 gpiod_direction_output(smi->mdio, 1); in realtek_smi_start() 61 realtek_smi_clk_delay(smi); in realtek_smi_start() [all …]
|
| D | rtl8366.c | 2 /* Realtek SMI library helpers for the RTL8366x variants 14 #include "realtek-smi-core.h" 16 int rtl8366_mc_is_used(struct realtek_smi *smi, int mc_index, int *used) in rtl8366_mc_is_used() argument 22 for (i = 0; i < smi->num_ports; i++) { in rtl8366_mc_is_used() 25 ret = smi->ops->get_mc_index(smi, i, &index); in rtl8366_mc_is_used() 41 * @smi: the Realtek SMI device instance 47 static int rtl8366_obtain_mc(struct realtek_smi *smi, int vid, in rtl8366_obtain_mc() argument 55 for (i = 0; i < smi->num_vlan_mc; i++) { in rtl8366_obtain_mc() 56 ret = smi->ops->get_vlan_mc(smi, i, vlanmc); in rtl8366_obtain_mc() 58 dev_err(smi->dev, "error searching for VLAN MC %d for VID %d\n", in rtl8366_obtain_mc() [all …]
|
| D | realtek-smi-core.h | 2 /* Realtek SMI interface driver defines 78 * struct realtek_smi_ops - vtable for the per-SMI-chiptype operations 82 int (*detect)(struct realtek_smi *smi); 83 int (*reset_chip)(struct realtek_smi *smi); 84 int (*setup)(struct realtek_smi *smi); 85 void (*cleanup)(struct realtek_smi *smi); 86 int (*get_mib_counter)(struct realtek_smi *smi, 90 int (*get_vlan_mc)(struct realtek_smi *smi, u32 index, 92 int (*set_vlan_mc)(struct realtek_smi *smi, u32 index, 94 int (*get_vlan_4k)(struct realtek_smi *smi, u32 vid, [all …]
|
| D | rtl8366rb.c | 2 /* Realtek SMI subdriver for the Realtek RTL8366RB ethernet switch 23 #include "realtek-smi-core.h" 358 static int rtl8366rb_get_mib_counter(struct realtek_smi *smi, in rtl8366rb_get_mib_counter() argument 374 ret = regmap_write(smi->map, addr, 0); /* Write whatever */ in rtl8366rb_get_mib_counter() 379 ret = regmap_read(smi->map, RTL8366RB_MIB_CTRL_REG, &val); in rtl8366rb_get_mib_counter() 392 ret = regmap_read(smi->map, addr + (i - 1), &val); in rtl8366rb_get_mib_counter() 417 struct realtek_smi *smi = irq_data_get_irq_chip_data(d); in rtl8366rb_mask_irq() local 420 ret = regmap_update_bits(smi->map, RTL8366RB_INTERRUPT_MASK_REG, in rtl8366rb_mask_irq() 423 dev_err(smi->dev, "could not mask IRQ\n"); in rtl8366rb_mask_irq() 428 struct realtek_smi *smi = irq_data_get_irq_chip_data(d); in rtl8366rb_unmask_irq() local [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/memory-controllers/ |
| D | mediatek,smi-common.yaml | 5 $id: http://devicetree.org/schemas/memory-controllers/mediatek,smi-common.yaml# 8 title: SMI (Smart Multimedia Interface) Common 16 MediaTek SMI have two generations of HW architecture, here is the list 21 There's slight differences between the two SMI, for generation 2, the 23 for generation 1, the register is at smi ao base(smi always on register 24 base). Besides that, the smi async clock should be prepared and enabled for 25 SMI generation 1 to transform the smi clock into emi clock domain, but that is 26 not needed for SMI generation 2. 32 - mediatek,mt2701-smi-common 33 - mediatek,mt2712-smi-common [all …]
|
| D | mediatek,smi-larb.yaml | 5 $id: http://devicetree.org/schemas/memory-controllers/mediatek,smi-larb.yaml# 8 title: SMI (Smart Multimedia Interface) Local Arbiter 20 - mediatek,mt2701-smi-larb 21 - mediatek,mt2712-smi-larb 22 - mediatek,mt6779-smi-larb 23 - mediatek,mt6795-smi-larb 24 - mediatek,mt8167-smi-larb 25 - mediatek,mt8173-smi-larb 26 - mediatek,mt8183-smi-larb 27 - mediatek,mt8186-smi-larb [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/memory-controllers/ |
| D | mediatek,smi-common.txt | 1 SMI (Smart Multimedia Interface) Common 5 Mediatek SMI have two generations of HW architecture, here is the list 10 There's slight differences between the two SMI, for generation 2, the 12 for generation 1, the register is at smi ao base(smi always on register 13 base). Besides that, the smi async clock should be prepared and enabled for 14 SMI generation 1 to transform the smi clock into emi clock domain, but that is 15 not needed for SMI generation 2. 19 "mediatek,mt2701-smi-common" 20 "mediatek,mt2712-smi-common" 21 "mediatek,mt6779-smi-common" [all …]
|
| D | mediatek,smi-larb.txt | 1 SMI (Smart Multimedia Interface) Local Arbiter 7 "mediatek,mt2701-smi-larb" 8 "mediatek,mt2712-smi-larb" 9 "mediatek,mt6779-smi-larb" 10 "mediatek,mt7623-smi-larb", "mediatek,mt2701-smi-larb" 11 "mediatek,mt8167-smi-larb" 12 "mediatek,mt8173-smi-larb" 13 "mediatek,mt8183-smi-larb" 15 - mediatek,smi : a phandle to the smi_common node. 21 - "smi" : It's the clock for transfer data and command. [all …]
|
| /kernel/linux/linux-6.6/drivers/char/ipmi/ |
| D | ipmi_powernv.c | 38 struct ipmi_smi_powernv *smi = send_info; in ipmi_powernv_start_processing() local 40 smi->intf = intf; in ipmi_powernv_start_processing() 44 static void send_error_reply(struct ipmi_smi_powernv *smi, in send_error_reply() argument 51 ipmi_smi_msg_received(smi->intf, msg); in send_error_reply() 56 struct ipmi_smi_powernv *smi = send_info; in ipmi_powernv_send() local 74 spin_lock_irqsave(&smi->msg_lock, flags); in ipmi_powernv_send() 76 if (smi->cur_msg) { in ipmi_powernv_send() 82 opal_msg = smi->opal_msg; in ipmi_powernv_send() 93 smi->interface_id, opal_msg, size); in ipmi_powernv_send() 94 rc = opal_ipmi_send(smi->interface_id, opal_msg, size); in ipmi_powernv_send() [all …]
|
| D | ipmi_si_sm.h | 28 /* Results of SMI events. */ 44 /* Handlers for the SMI state machine. */ 56 unsigned int (*init_data)(struct si_sm_data *smi, 65 int (*start_transaction)(struct si_sm_data *smi, 73 int (*get_result)(struct si_sm_data *smi, 84 enum si_sm_result (*event)(struct si_sm_data *smi, long time); 87 * Attempt to detect an SMI. Returns 0 on success or nonzero 90 int (*detect)(struct si_sm_data *smi); 93 void (*cleanup)(struct si_sm_data *smi); 95 /* Return the size of the SMI structure in bytes. */
|
| /kernel/linux/linux-5.10/drivers/char/ipmi/ |
| D | ipmi_powernv.c | 38 struct ipmi_smi_powernv *smi = send_info; in ipmi_powernv_start_processing() local 40 smi->intf = intf; in ipmi_powernv_start_processing() 44 static void send_error_reply(struct ipmi_smi_powernv *smi, in send_error_reply() argument 51 ipmi_smi_msg_received(smi->intf, msg); in send_error_reply() 56 struct ipmi_smi_powernv *smi = send_info; in ipmi_powernv_send() local 74 spin_lock_irqsave(&smi->msg_lock, flags); in ipmi_powernv_send() 76 if (smi->cur_msg) { in ipmi_powernv_send() 82 opal_msg = smi->opal_msg; in ipmi_powernv_send() 93 smi->interface_id, opal_msg, size); in ipmi_powernv_send() 94 rc = opal_ipmi_send(smi->interface_id, opal_msg, size); in ipmi_powernv_send() [all …]
|
| D | ipmi_si_sm.h | 28 /* Results of SMI events. */ 44 /* Handlers for the SMI state machine. */ 56 unsigned int (*init_data)(struct si_sm_data *smi, 65 int (*start_transaction)(struct si_sm_data *smi, 73 int (*get_result)(struct si_sm_data *smi, 84 enum si_sm_result (*event)(struct si_sm_data *smi, long time); 87 * Attempt to detect an SMI. Returns 0 on success or nonzero 90 int (*detect)(struct si_sm_data *smi); 93 void (*cleanup)(struct si_sm_data *smi); 95 /* Return the size of the SMI structure in bytes. */
|
| /kernel/linux/linux-6.6/drivers/platform/x86/ |
| D | serial-multi-instantiate.c | 43 struct smi { struct 84 static void smi_devs_unregister(struct smi *smi) in smi_devs_unregister() argument 86 while (smi->i2c_num--) in smi_devs_unregister() 87 i2c_unregister_device(smi->i2c_devs[smi->i2c_num]); in smi_devs_unregister() 89 while (smi->spi_num--) in smi_devs_unregister() 90 spi_unregister_device(smi->spi_devs[smi->spi_num]); in smi_devs_unregister() 96 * @smi: Internal struct for Serial multi instantiate driver 101 static int smi_spi_probe(struct platform_device *pdev, struct smi *smi, in smi_spi_probe() argument 119 smi->spi_devs = devm_kcalloc(dev, count, sizeof(*smi->spi_devs), GFP_KERNEL); in smi_spi_probe() 120 if (!smi->spi_devs) in smi_spi_probe() [all …]
|
| /kernel/linux/linux-5.10/drivers/memory/ |
| D | mtk-smi.c | 16 #include <soc/mediatek/smi.h> 47 /* SMI COMMON */ 84 struct mtk_smi smi; member 92 static int mtk_smi_clk_enable(const struct mtk_smi *smi) in mtk_smi_clk_enable() argument 96 ret = clk_prepare_enable(smi->clk_apb); in mtk_smi_clk_enable() 100 ret = clk_prepare_enable(smi->clk_smi); in mtk_smi_clk_enable() 104 ret = clk_prepare_enable(smi->clk_gals0); in mtk_smi_clk_enable() 108 ret = clk_prepare_enable(smi->clk_gals1); in mtk_smi_clk_enable() 115 clk_disable_unprepare(smi->clk_gals0); in mtk_smi_clk_enable() 117 clk_disable_unprepare(smi->clk_smi); in mtk_smi_clk_enable() [all …]
|
| /kernel/linux/linux-6.6/drivers/watchdog/ |
| D | iTCO_vendor_support.c | 47 "0 (none), 1=SuperMicro Pent3, 911=Broken SMI BIOS"); 62 * BIOS setup -> Power -> TCO Logic SMI Enable -> Within5Minutes 63 * This setting enables SMI to clear the watchdog expired flag. 64 * If BIOS or CPU fail which may cause SMI hang, then system will 66 * application has to take over the control from SMI. 81 /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */ in supermicro_old_pre_start() 83 val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ in supermicro_old_pre_start() 91 /* Bit 13: TCO_EN -> 1 = Enables the TCO logic to generate SMI# */ in supermicro_old_pre_stop() 93 val32 |= 0x00002000; /* Turn on SMI clearing watchdog */ in supermicro_old_pre_stop() 103 * the SMI handler clear's the TIMEOUT bit in the TC01_STS register [all …]
|
| /kernel/linux/linux-5.10/drivers/watchdog/ |
| D | iTCO_vendor_support.c | 47 "0 (none), 1=SuperMicro Pent3, 911=Broken SMI BIOS"); 62 * BIOS setup -> Power -> TCO Logic SMI Enable -> Within5Minutes 63 * This setting enables SMI to clear the watchdog expired flag. 64 * If BIOS or CPU fail which may cause SMI hang, then system will 66 * application has to take over the control from SMI. 81 /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */ in supermicro_old_pre_start() 83 val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ in supermicro_old_pre_start() 91 /* Bit 13: TCO_EN -> 1 = Enables the TCO logic to generate SMI# */ in supermicro_old_pre_stop() 93 val32 |= 0x00002000; /* Turn on SMI clearing watchdog */ in supermicro_old_pre_stop() 103 * the SMI handler clear's the TIMEOUT bit in the TC01_STS register [all …]
|
| /kernel/linux/linux-6.6/drivers/memory/ |
| D | mtk-smi.c | 19 #include <soc/mediatek/smi.h> 23 /* SMI COMMON */ 39 /* SMI LARB */ 104 MTK_SMI_GEN2, /* gen2 smi common */ 105 MTK_SMI_GEN2_SUB_COMM, /* gen2 smi sub common */ 108 /* larbs: Require apb/smi clocks while gals is optional. */ 109 static const char * const mtk_smi_larb_clks[] = {"apb", "smi", "gals"}; 114 * common: Require these four clocks in has_gals case. Otherwise, only apb/smi are required. 115 * sub common: Require apb/smi/gals0 clocks in has_gals case. Otherwise, only apb/smi are required. 117 static const char * const mtk_smi_common_clks[] = {"apb", "smi", "gals0", "gals1"}; [all …]
|
| /kernel/linux/linux-6.6/Documentation/driver-api/ |
| D | dcdbas.rst | 28 management information via a system management interrupt (SMI). The SMI data 30 buffer is required for the SMI. The driver maintains the memory required for 31 the SMI and provides a way for the application to generate the SMI. 41 a SMI using this driver: 45 3) Write "1" to smi_request to generate a calling interface SMI or 46 "2" to generate a raw SMI. 57 a driver perform a SMI after the OS has finished shutting down. 71 2) Write type of SMI that driver needs to perform to host_control_smi_type. 74 (Driver will perform host control SMI when it is notified that the OS 78 Host Control SMI Type [all …]
|
| /kernel/linux/linux-5.10/Documentation/driver-api/ |
| D | dcdbas.rst | 28 management information via a system management interrupt (SMI). The SMI data 30 buffer is required for the SMI. The driver maintains the memory required for 31 the SMI and provides a way for the application to generate the SMI. 41 a SMI using this driver: 45 3) Write "1" to smi_request to generate a calling interface SMI or 46 "2" to generate a raw SMI. 57 a driver perform a SMI after the OS has finished shutting down. 71 2) Write type of SMI that driver needs to perform to host_control_smi_type. 74 (Driver will perform host control SMI when it is notified that the OS 78 Host Control SMI Type [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/iommu/ |
| D | mediatek,iommu.txt | 23 SMI Common(Smart Multimedia Interface Common) 32 SMI larb0 SMI larb1 ... SoCs have several SMI local arbiter(larb). 42 As above, The Multimedia HW will go through SMI and M4U while it 43 access EMI. SMI is a bridge between m4u and the Multimedia HW. It contain 44 smi local arbiter and smi common. It will control whether the Multimedia 46 directly with EMI. And also SMI help control the power domain and clocks for 53 smi-common and m4u, and additional GALS module between smi-larb and 54 smi-common. GALS can been seen as a "asynchronous fifo" which could help 77 Refer to bindings/memory-controllers/mediatek,smi-larb.txt. It must sort
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/i915/ |
| D | i915_cmd_parser.c | 198 #define SMI STD_MI_OPCODE_SHIFT macro 211 CMD( MI_NOOP, SMI, F, 1, S ), 212 CMD( MI_USER_INTERRUPT, SMI, F, 1, R ), 213 CMD( MI_WAIT_FOR_EVENT, SMI, F, 1, R ), 214 CMD( MI_ARB_CHECK, SMI, F, 1, S ), 215 CMD( MI_REPORT_HEAD, SMI, F, 1, S ), 216 CMD( MI_SUSPEND_FLUSH, SMI, F, 1, S ), 217 CMD( MI_SEMAPHORE_MBOX, SMI, !F, 0xFF, R ), 218 CMD( MI_STORE_DWORD_INDEX, SMI, !F, 0xFF, R ), 219 CMD( MI_LOAD_REGISTER_IMM(1), SMI, !F, 0xFF, W, [all …]
|
| /kernel/linux/linux-6.6/drivers/gpu/drm/i915/ |
| D | i915_cmd_parser.c | 207 #define SMI STD_MI_OPCODE_SHIFT macro 220 CMD( MI_NOOP, SMI, F, 1, S ), 221 CMD( MI_USER_INTERRUPT, SMI, F, 1, R ), 222 CMD( MI_WAIT_FOR_EVENT, SMI, F, 1, R ), 223 CMD( MI_ARB_CHECK, SMI, F, 1, S ), 224 CMD( MI_REPORT_HEAD, SMI, F, 1, S ), 225 CMD( MI_SUSPEND_FLUSH, SMI, F, 1, S ), 226 CMD( MI_SEMAPHORE_MBOX, SMI, !F, 0xFF, R ), 227 CMD( MI_STORE_DWORD_INDEX, SMI, !F, 0xFF, R ), 228 CMD( MI_LOAD_REGISTER_IMM(1), SMI, !F, 0xFF, W, [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/mtd/ |
| D | spear_smi.txt | 1 * SPEAr SMI 4 - compatible : "st,spear600-smi" 9 - clock-rate : Functional clock rate of SMI in Hz 12 - st,smi-fast-mode : Flash supports read in fast mode 16 smi: flash@fc000000 { 17 compatible = "st,spear600-smi"; 26 st,smi-fast-mode;
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/mtd/ |
| D | spear_smi.txt | 1 * SPEAr SMI 4 - compatible : "st,spear600-smi" 9 - clock-rate : Functional clock rate of SMI in Hz 12 - st,smi-fast-mode : Flash supports read in fast mode 16 smi: flash@fc000000 { 17 compatible = "st,spear600-smi"; 26 st,smi-fast-mode;
|
| /kernel/linux/linux-5.10/drivers/net/dsa/mv88e6xxx/ |
| D | smi.c | 3 * Marvell 88E6xxx System Management Interface (SMI) support 11 #include "smi.h" 13 /* The switch ADDR[4:1] configuration pins define the chip SMI device address 14 * (ADDR[0] is always zero, thus only even SMI addresses can be strapped). 17 * is the only device connected to the SMI master. In this mode it responds to 18 * all 32 possible SMI addresses, and thus maps directly the internal devices. 21 * multiple devices to share the SMI interface. In this mode it responds to only 22 * 2 registers, used to indirectly access the internal SMI devices. 25 * configuration, and the device responds to 16 of the 32 SMI 26 * addresses, allowing two to coexist on the same SMI interface. [all …]
|