Lines Matching refs:sd

101 #define CLOCK_PULSE(sd, rdy)				\
102 while ((SEEPROM_STATUS_INB(sd) & rdy) == 0) { \
105 (void)SEEPROM_INB(sd); /* Clear clock */
111 send_seeprom_cmd(struct seeprom_descriptor *sd, const struct seeprom_cmd *cmd)
117 temp = sd->sd_MS ^ sd->sd_CS;
118 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
119 CLOCK_PULSE(sd, sd->sd_RDY);
123 temp ^= sd->sd_DO;
124 SEEPROM_OUTB(sd, temp);
125 CLOCK_PULSE(sd, sd->sd_RDY);
126 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
127 CLOCK_PULSE(sd, sd->sd_RDY);
129 temp ^= sd->sd_DO;
137 reset_seeprom(struct seeprom_descriptor *sd)
141 temp = sd->sd_MS;
142 SEEPROM_OUTB(sd, temp);
143 CLOCK_PULSE(sd, sd->sd_RDY);
144 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
145 CLOCK_PULSE(sd, sd->sd_RDY);
146 SEEPROM_OUTB(sd, temp);
147 CLOCK_PULSE(sd, sd->sd_RDY);
155 ahc_read_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
172 send_seeprom_cmd(sd, &seeprom_read);
175 temp = sd->sd_MS ^ sd->sd_CS;
176 for (i = (sd->sd_chip - 1); i >= 0; i--) {
178 temp ^= sd->sd_DO;
179 SEEPROM_OUTB(sd, temp);
180 CLOCK_PULSE(sd, sd->sd_RDY);
181 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
182 CLOCK_PULSE(sd, sd->sd_RDY);
184 temp ^= sd->sd_DO;
195 SEEPROM_OUTB(sd, temp);
196 CLOCK_PULSE(sd, sd->sd_RDY);
198 if (SEEPROM_DATA_INB(sd) & sd->sd_DI)
200 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
201 CLOCK_PULSE(sd, sd->sd_RDY);
207 reset_seeprom(sd);
227 ahc_write_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
236 if (sd->sd_chip == C46) {
239 } else if (sd->sd_chip == C56_66) {
244 sd->sd_chip);
248 send_seeprom_cmd(sd, ewen);
249 reset_seeprom(sd);
252 temp = sd->sd_MS ^ sd->sd_CS;
255 send_seeprom_cmd(sd, &seeprom_write);
258 for (i = (sd->sd_chip - 1); i >= 0; i--) {
260 temp ^= sd->sd_DO;
261 SEEPROM_OUTB(sd, temp);
262 CLOCK_PULSE(sd, sd->sd_RDY);
263 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
264 CLOCK_PULSE(sd, sd->sd_RDY);
266 temp ^= sd->sd_DO;
273 temp ^= sd->sd_DO;
274 SEEPROM_OUTB(sd, temp);
275 CLOCK_PULSE(sd, sd->sd_RDY);
276 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
277 CLOCK_PULSE(sd, sd->sd_RDY);
279 temp ^= sd->sd_DO;
283 temp = sd->sd_MS;
284 SEEPROM_OUTB(sd, temp);
285 CLOCK_PULSE(sd, sd->sd_RDY);
286 temp = sd->sd_MS ^ sd->sd_CS;
288 SEEPROM_OUTB(sd, temp);
289 CLOCK_PULSE(sd, sd->sd_RDY);
290 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
291 CLOCK_PULSE(sd, sd->sd_RDY);
292 } while ((SEEPROM_DATA_INB(sd) & sd->sd_DI) == 0);
294 reset_seeprom(sd);
298 send_seeprom_cmd(sd, ewds);
299 reset_seeprom(sd);