Lines Matching refs:ctl
18 static int tb_eeprom_ctl_write(struct tb_switch *sw, struct tb_eeprom_ctl *ctl)
20 return tb_sw_write(sw, ctl, TB_CFG_SWITCH, sw->cap_plug_events + ROUTER_CS_4, 1);
26 static int tb_eeprom_ctl_read(struct tb_switch *sw, struct tb_eeprom_ctl *ctl)
28 return tb_sw_read(sw, ctl, TB_CFG_SWITCH, sw->cap_plug_events + ROUTER_CS_4, 1);
44 struct tb_eeprom_ctl ctl;
45 int res = tb_eeprom_ctl_read(sw, &ctl);
49 ctl.bit_banging_enable = 1;
50 res = tb_eeprom_ctl_write(sw, &ctl);
53 ctl.fl_cs = 0;
54 return tb_eeprom_ctl_write(sw, &ctl);
56 ctl.fl_cs = 1;
57 res = tb_eeprom_ctl_write(sw, &ctl);
60 ctl.bit_banging_enable = 0;
61 return tb_eeprom_ctl_write(sw, &ctl);
68 * If TB_EEPROM_IN is passed, then the bit can be retrieved from ctl->fl_do.
69 * If TB_EEPROM_OUT is passed, then ctl->fl_di will be written.
71 static int tb_eeprom_transfer(struct tb_switch *sw, struct tb_eeprom_ctl *ctl,
76 res = tb_eeprom_ctl_write(sw, ctl);
80 ctl->fl_sk = 1;
81 res = tb_eeprom_ctl_write(sw, ctl);
85 res = tb_eeprom_ctl_read(sw, ctl);
89 ctl->fl_sk = 0;
90 return tb_eeprom_ctl_write(sw, ctl);
98 struct tb_eeprom_ctl ctl;
100 int res = tb_eeprom_ctl_read(sw, &ctl);
104 ctl.fl_di = val & 0x80;
105 res = tb_eeprom_transfer(sw, &ctl, TB_EEPROM_OUT);
118 struct tb_eeprom_ctl ctl;
120 int res = tb_eeprom_ctl_read(sw, &ctl);
126 res = tb_eeprom_transfer(sw, &ctl, TB_EEPROM_IN);
129 *val |= ctl.fl_do;