72 #include <dev/aic7xxx/aic7xxx_osm.h>
73 #include <dev/aic7xxx/aic7xxx_inline.h>
74 #include <dev/aic7xxx/aic7xxx_93cx6.h>
87 static const struct seeprom_cmd seeprom_ewen = {9, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
88 static const struct seeprom_cmd seeprom_ewds = {9, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
91 static const struct seeprom_cmd seeprom_long_ewen = {11, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
92 static const struct seeprom_cmd seeprom_long_ewds = {11, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
95 static const struct seeprom_cmd seeprom_write = {3, {1, 0, 1}};
96 static const struct seeprom_cmd seeprom_read = {3, {1, 1, 0}};
101 #define CLOCK_PULSE(sd, rdy) \
102 while ((SEEPROM_STATUS_INB(sd) & rdy) == 0) { \
105 (void)SEEPROM_INB(sd);
121 for (i = 0; i < cmd->
len; i++) {
122 if (cmd->
bits[i] != 0)
128 if (cmd->
bits[i] != 0)
167 for (k = start_addr; k < count +
start_addr; k++) {
172 send_seeprom_cmd(sd, &seeprom_read);
176 for (i = (sd->
sd_chip - 1); i >= 0; i--) {
177 if ((k & (1 << i)) != 0)
183 if ((k & (1 << i)) != 0)
194 for (i = 16; i >= 0; i--) {
209 #ifdef AHC_DUMP_EEPROM
210 printk(
"\nSerial EEPROM:\n\t");
211 for (k = 0; k <
count; k = k + 1) {
212 if (((k % 8) == 0) && (k != 0)) {
237 ewen = &seeprom_ewen;
238 ewds = &seeprom_ewds;
240 ewen = &seeprom_long_ewen;
241 ewds = &seeprom_long_ewds;
243 printk(
"ahc_write_seeprom: unsupported seeprom type %d\n",
248 send_seeprom_cmd(sd, ewen);
253 for (k = start_addr; k < count +
start_addr; k++) {
255 send_seeprom_cmd(sd, &seeprom_write);
258 for (i = (sd->
sd_chip - 1); i >= 0; i--) {
259 if ((k & (1 << i)) != 0)
265 if ((k & (1 << i)) != 0)
271 for (i = 15; i >= 0; i--) {
272 if ((v & (1 << i)) != 0)
278 if ((v & (1 << i)) != 0)
298 send_seeprom_cmd(sd, ewds);
312 maxaddr = (
sizeof(*sc)/2) - 1;
316 for (i = 0; i < maxaddr; i++)
317 checksum = checksum + scarray[i];
319 || (checksum & 0xFFFF) != sc->
checksum) {