static void toggle_port(int toggle_idx) { int i; i = allport[toggle_idx].master; if (i < SMI_LARB_NUMBER) { smi_larb[i].port = allport[toggle_idx].port; smi_larb[i].rwtype = allport[toggle_idx].rwtype; smi_larb[i].desttype = allport[toggle_idx].desttype; smi_larb[i].bustype = allport[toggle_idx].bustype; SMI_Disable(i); SMI_Clear(i); SMI_SetSMIBMCfg(i, smi_larb[i].port, smi_larb[i].desttype, smi_larb[i].rwtype); //SMI_SetMonitorControl(0); //SMIBMCfgEx default SMI_SetMonitorControl(&monitorctrl); SMI_Enable(i, smi_larb[i].bustype); } else { i = i - SMI_LARB_NUMBER; smi_comm[i].port = allport[toggle_idx].port; smi_comm[i].rwtype = allport[toggle_idx].rwtype; smi_comm[i].desttype = allport[toggle_idx].desttype; smi_comm[i].bustype = allport[toggle_idx].bustype; SMI_Comm_Disable(i); SMI_Comm_Clear(i); SMI_SetCommBMCfg(i, smi_comm[i].port, smi_comm[i].desttype, smi_comm[i].rwtype); SMI_Comm_Enable(i); }; }
static void smi_init(void) { int i; SMI_Init(); SMI_PowerOn(); if (do_smi() == 1) { for (i=0; i< SMI_LARB_NUMBER; i++) { // TODO: need to re-check here if ((i==3) || (i==4)) continue; SMI_Disable(i); SMI_SetSMIBMCfg(i, smi_larb[i].port, smi_larb[i].desttype, smi_larb[i].rwtype); if (smi_larb[i].mode == 1) { enable_master_cnt += 1; } } //SMI_SetMonitorControl(0); //SMIBMCfgEx default SMI_SetMonitorControl(&monitorctrl); for (i=0; i< SMI_COMM_NUMBER; i++) { SMI_Comm_Disable(i); SMI_SetCommBMCfg(i, smi_comm[i].port, smi_comm[i].desttype, smi_comm[i].rwtype); if (smi_comm[i].mode == 1) { enable_master_cnt += 1; } } } else if (do_smi() == 2) { toggle_idx = 0; toggle_port(toggle_idx); } else if (do_smi() == 3) { toggle_master_max = toggle_master_min = -1; for (i=0; i<SMI_ALLPORT_COUNT*4; i++) { if (allport[i].master == toggle_master) { if (toggle_master_min == -1) { toggle_master_max = i; toggle_master_min = i; } if (i > toggle_master_max) { toggle_master_max = i; } if (i < toggle_master_min) { toggle_master_min = i; } } } printk("smi toggle min=%d, max=%d\n",toggle_master_min,toggle_master_max); if (toggle_master_min >=0 ) { toggle_idx = toggle_master_min; toggle_port(toggle_idx); } } else if (do_smi() == 4) { } }