Lines Matching refs:sd

103 #define CLOCK_PULSE(sd, rdy)				\
104 while ((SEEPROM_STATUS_INB(sd) & rdy) == 0) { \
107 (void)SEEPROM_INB(sd); /* Clear clock */
113 send_seeprom_cmd(struct seeprom_descriptor *sd, struct seeprom_cmd *cmd)
119 temp = sd->sd_MS ^ sd->sd_CS;
120 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
121 CLOCK_PULSE(sd, sd->sd_RDY);
125 temp ^= sd->sd_DO;
126 SEEPROM_OUTB(sd, temp);
127 CLOCK_PULSE(sd, sd->sd_RDY);
128 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
129 CLOCK_PULSE(sd, sd->sd_RDY);
131 temp ^= sd->sd_DO;
139 reset_seeprom(struct seeprom_descriptor *sd)
143 temp = sd->sd_MS;
144 SEEPROM_OUTB(sd, temp);
145 CLOCK_PULSE(sd, sd->sd_RDY);
146 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
147 CLOCK_PULSE(sd, sd->sd_RDY);
148 SEEPROM_OUTB(sd, temp);
149 CLOCK_PULSE(sd, sd->sd_RDY);
157 ahc_read_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
174 send_seeprom_cmd(sd, &seeprom_read);
177 temp = sd->sd_MS ^ sd->sd_CS;
178 for (i = (sd->sd_chip - 1); i >= 0; i--) {
180 temp ^= sd->sd_DO;
181 SEEPROM_OUTB(sd, temp);
182 CLOCK_PULSE(sd, sd->sd_RDY);
183 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
184 CLOCK_PULSE(sd, sd->sd_RDY);
186 temp ^= sd->sd_DO;
197 SEEPROM_OUTB(sd, temp);
198 CLOCK_PULSE(sd, sd->sd_RDY);
200 if (SEEPROM_DATA_INB(sd) & sd->sd_DI)
202 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
203 CLOCK_PULSE(sd, sd->sd_RDY);
209 reset_seeprom(sd);
229 ahc_write_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
238 if (sd->sd_chip == C46) {
241 } else if (sd->sd_chip == C56_66) {
246 sd->sd_chip);
250 send_seeprom_cmd(sd, ewen);
251 reset_seeprom(sd);
254 temp = sd->sd_MS ^ sd->sd_CS;
257 send_seeprom_cmd(sd, &seeprom_write);
260 for (i = (sd->sd_chip - 1); i >= 0; i--) {
262 temp ^= sd->sd_DO;
263 SEEPROM_OUTB(sd, temp);
264 CLOCK_PULSE(sd, sd->sd_RDY);
265 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
266 CLOCK_PULSE(sd, sd->sd_RDY);
268 temp ^= sd->sd_DO;
275 temp ^= sd->sd_DO;
276 SEEPROM_OUTB(sd, temp);
277 CLOCK_PULSE(sd, sd->sd_RDY);
278 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
279 CLOCK_PULSE(sd, sd->sd_RDY);
281 temp ^= sd->sd_DO;
285 temp = sd->sd_MS;
286 SEEPROM_OUTB(sd, temp);
287 CLOCK_PULSE(sd, sd->sd_RDY);
288 temp = sd->sd_MS ^ sd->sd_CS;
290 SEEPROM_OUTB(sd, temp);
291 CLOCK_PULSE(sd, sd->sd_RDY);
292 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
293 CLOCK_PULSE(sd, sd->sd_RDY);
294 } while ((SEEPROM_DATA_INB(sd) & sd->sd_DI) == 0);
296 reset_seeprom(sd);
300 send_seeprom_cmd(sd, ewds);
301 reset_seeprom(sd);