Lines Matching refs:sd

95 #define CLOCK_PULSE(sd, rdy)				\
96 while ((SEEPROM_STATUS_INB(sd) & rdy) == 0) { \
99 (void)SEEPROM_INB(sd); /* Clear clock */
105 send_seeprom_cmd(struct seeprom_descriptor *sd, const struct seeprom_cmd *cmd)
111 temp = sd->sd_MS ^ sd->sd_CS;
112 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
113 CLOCK_PULSE(sd, sd->sd_RDY);
117 temp ^= sd->sd_DO;
118 SEEPROM_OUTB(sd, temp);
119 CLOCK_PULSE(sd, sd->sd_RDY);
120 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
121 CLOCK_PULSE(sd, sd->sd_RDY);
123 temp ^= sd->sd_DO;
131 reset_seeprom(struct seeprom_descriptor *sd)
135 temp = sd->sd_MS;
136 SEEPROM_OUTB(sd, temp);
137 CLOCK_PULSE(sd, sd->sd_RDY);
138 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
139 CLOCK_PULSE(sd, sd->sd_RDY);
140 SEEPROM_OUTB(sd, temp);
141 CLOCK_PULSE(sd, sd->sd_RDY);
149 ahc_read_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
166 send_seeprom_cmd(sd, &seeprom_read);
169 temp = sd->sd_MS ^ sd->sd_CS;
170 for (i = (sd->sd_chip - 1); i >= 0; i--) {
172 temp ^= sd->sd_DO;
173 SEEPROM_OUTB(sd, temp);
174 CLOCK_PULSE(sd, sd->sd_RDY);
175 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
176 CLOCK_PULSE(sd, sd->sd_RDY);
178 temp ^= sd->sd_DO;
189 SEEPROM_OUTB(sd, temp);
190 CLOCK_PULSE(sd, sd->sd_RDY);
192 if (SEEPROM_DATA_INB(sd) & sd->sd_DI)
194 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
195 CLOCK_PULSE(sd, sd->sd_RDY);
201 reset_seeprom(sd);
221 ahc_write_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
230 if (sd->sd_chip == C46) {
233 } else if (sd->sd_chip == C56_66) {
238 sd->sd_chip);
242 send_seeprom_cmd(sd, ewen);
243 reset_seeprom(sd);
246 temp = sd->sd_MS ^ sd->sd_CS;
249 send_seeprom_cmd(sd, &seeprom_write);
252 for (i = (sd->sd_chip - 1); i >= 0; i--) {
254 temp ^= sd->sd_DO;
255 SEEPROM_OUTB(sd, temp);
256 CLOCK_PULSE(sd, sd->sd_RDY);
257 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
258 CLOCK_PULSE(sd, sd->sd_RDY);
260 temp ^= sd->sd_DO;
267 temp ^= sd->sd_DO;
268 SEEPROM_OUTB(sd, temp);
269 CLOCK_PULSE(sd, sd->sd_RDY);
270 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
271 CLOCK_PULSE(sd, sd->sd_RDY);
273 temp ^= sd->sd_DO;
277 temp = sd->sd_MS;
278 SEEPROM_OUTB(sd, temp);
279 CLOCK_PULSE(sd, sd->sd_RDY);
280 temp = sd->sd_MS ^ sd->sd_CS;
282 SEEPROM_OUTB(sd, temp);
283 CLOCK_PULSE(sd, sd->sd_RDY);
284 SEEPROM_OUTB(sd, temp ^ sd->sd_CK);
285 CLOCK_PULSE(sd, sd->sd_RDY);
286 } while ((SEEPROM_DATA_INB(sd) & sd->sd_DI) == 0);
288 reset_seeprom(sd);
292 send_seeprom_cmd(sd, ewds);
293 reset_seeprom(sd);