Commit 18be51872917e70e00cb21e018b6bff33162c4f7

Authored by pbrook
1 parent 9656f324

Remove duplicate device index calculations.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4818 c046a42c-6fe2-441c-8c8c-71466251a162
hw/ads7846.c
@@ -140,8 +140,6 @@ static int ads7846_load(QEMUFile *f, void *opaque, int version_id) @@ -140,8 +140,6 @@ static int ads7846_load(QEMUFile *f, void *opaque, int version_id)
140 return 0; 140 return 0;
141 } 141 }
142 142
143 -static int ads7846_iid = 0;  
144 -  
145 struct ads7846_state_s *ads7846_init(qemu_irq penirq) 143 struct ads7846_state_s *ads7846_init(qemu_irq penirq)
146 { 144 {
147 struct ads7846_state_s *s; 145 struct ads7846_state_s *s;
@@ -162,8 +160,7 @@ struct ads7846_state_s *ads7846_init(qemu_irq penirq) @@ -162,8 +160,7 @@ struct ads7846_state_s *ads7846_init(qemu_irq penirq)
162 160
163 ads7846_int_update(s); 161 ads7846_int_update(s);
164 162
165 - register_savevm("ads7846", ads7846_iid ++, 0,  
166 - ads7846_save, ads7846_load, s); 163 + register_savevm("ads7846", -1, 0, ads7846_save, ads7846_load, s);
167 164
168 return s; 165 return s;
169 } 166 }
hw/ide.c
@@ -3596,8 +3596,6 @@ static int md_load(QEMUFile *f, void *opaque, int version_id) @@ -3596,8 +3596,6 @@ static int md_load(QEMUFile *f, void *opaque, int version_id)
3596 return 0; 3596 return 0;
3597 } 3597 }
3598 3598
3599 -static int md_iid = 0;  
3600 -  
3601 static const uint8_t dscm1xxxx_cis[0x14a] = { 3599 static const uint8_t dscm1xxxx_cis[0x14a] = {
3602 [0x000] = CISTPL_DEVICE, /* 5V Device Information */ 3600 [0x000] = CISTPL_DEVICE, /* 5V Device Information */
3603 [0x002] = 0x03, /* Tuple length = 4 bytes */ 3601 [0x002] = 0x03, /* Tuple length = 4 bytes */
@@ -3824,7 +3822,7 @@ struct pcmcia_card_s *dscm1xxxx_init(BlockDriverState *bdrv) @@ -3824,7 +3822,7 @@ struct pcmcia_card_s *dscm1xxxx_init(BlockDriverState *bdrv)
3824 md->ide->mdata_size = METADATA_SIZE; 3822 md->ide->mdata_size = METADATA_SIZE;
3825 md->ide->mdata_storage = (uint8_t *) qemu_mallocz(METADATA_SIZE); 3823 md->ide->mdata_storage = (uint8_t *) qemu_mallocz(METADATA_SIZE);
3826 3824
3827 - register_savevm("microdrive", md_iid ++, 0, md_save, md_load, md); 3825 + register_savevm("microdrive", -1, 0, md_save, md_load, md);
3828 3826
3829 return &md->card; 3827 return &md->card;
3830 } 3828 }
hw/lm832x.c
@@ -490,8 +490,6 @@ static int lm_kbd_load(QEMUFile *f, void *opaque, int version_id) @@ -490,8 +490,6 @@ static int lm_kbd_load(QEMUFile *f, void *opaque, int version_id)
490 return 0; 490 return 0;
491 } 491 }
492 492
493 -static int lm_kbd_iid = 0;  
494 -  
495 struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq) 493 struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq)
496 { 494 {
497 struct lm_kbd_s *s; 495 struct lm_kbd_s *s;
@@ -510,8 +508,7 @@ struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq) @@ -510,8 +508,7 @@ struct i2c_slave *lm8323_init(i2c_bus *bus, qemu_irq nirq)
510 lm_kbd_reset(s); 508 lm_kbd_reset(s);
511 509
512 qemu_register_reset((void *) lm_kbd_reset, s); 510 qemu_register_reset((void *) lm_kbd_reset, s);
513 - register_savevm("LM8323", lm_kbd_iid ++, 0,  
514 - lm_kbd_save, lm_kbd_load, s); 511 + register_savevm("LM8323", -1, 0, lm_kbd_save, lm_kbd_load, s);
515 512
516 return &s->i2c; 513 return &s->i2c;
517 } 514 }
hw/max111x.c
@@ -121,8 +121,6 @@ static int max111x_load(QEMUFile *f, void *opaque, int version_id) @@ -121,8 +121,6 @@ static int max111x_load(QEMUFile *f, void *opaque, int version_id)
121 return 0; 121 return 0;
122 } 122 }
123 123
124 -static int max111x_iid = 0;  
125 -  
126 static struct max111x_s *max111x_init(qemu_irq cb) 124 static struct max111x_s *max111x_init(qemu_irq cb)
127 { 125 {
128 struct max111x_s *s; 126 struct max111x_s *s;
@@ -143,8 +141,7 @@ static struct max111x_s *max111x_init(qemu_irq cb) @@ -143,8 +141,7 @@ static struct max111x_s *max111x_init(qemu_irq cb)
143 s->input[7] = 0x80; 141 s->input[7] = 0x80;
144 s->com = 0; 142 s->com = 0;
145 143
146 - register_savevm("max111x", max111x_iid ++, 0,  
147 - max111x_save, max111x_load, s); 144 + register_savevm("max111x", -1, 0, max111x_save, max111x_load, s);
148 145
149 return s; 146 return s;
150 } 147 }
hw/max7310.c
@@ -177,8 +177,6 @@ static int max7310_load(QEMUFile *f, void *opaque, int version_id) @@ -177,8 +177,6 @@ static int max7310_load(QEMUFile *f, void *opaque, int version_id)
177 return 0; 177 return 0;
178 } 178 }
179 179
180 -static int max7310_iid = 0;  
181 -  
182 static void max7310_gpio_set(void *opaque, int line, int level) 180 static void max7310_gpio_set(void *opaque, int line, int level)
183 { 181 {
184 struct max7310_s *s = (struct max7310_s *) opaque; 182 struct max7310_s *s = (struct max7310_s *) opaque;
@@ -205,8 +203,7 @@ struct i2c_slave *max7310_init(i2c_bus *bus) @@ -205,8 +203,7 @@ struct i2c_slave *max7310_init(i2c_bus *bus)
205 203
206 max7310_reset(&s->i2c); 204 max7310_reset(&s->i2c);
207 205
208 - register_savevm("max7310", max7310_iid ++, 0,  
209 - max7310_save, max7310_load, s); 206 + register_savevm("max7310", -1, 0, max7310_save, max7310_load, s);
210 207
211 return &s->i2c; 208 return &s->i2c;
212 } 209 }
hw/nand.c
@@ -319,8 +319,6 @@ static int nand_load(QEMUFile *f, void *opaque, int version_id) @@ -319,8 +319,6 @@ static int nand_load(QEMUFile *f, void *opaque, int version_id)
319 return 0; 319 return 0;
320 } 320 }
321 321
322 -static int nand_iid = 0;  
323 -  
324 /* 322 /*
325 * Chip inputs are CLE, ALE, CE, WP, GND and eight I/O pins. Chip 323 * Chip inputs are CLE, ALE, CE, WP, GND and eight I/O pins. Chip
326 * outputs are R/B and eight I/O pins. 324 * outputs are R/B and eight I/O pins.
@@ -495,7 +493,7 @@ struct nand_flash_s *nand_init(int manf_id, int chip_id) @@ -495,7 +493,7 @@ struct nand_flash_s *nand_init(int manf_id, int chip_id)
495 s->storage = (uint8_t *) memset(qemu_malloc(s->pages * pagesize), 493 s->storage = (uint8_t *) memset(qemu_malloc(s->pages * pagesize),
496 0xff, s->pages * pagesize); 494 0xff, s->pages * pagesize);
497 495
498 - register_savevm("nand", nand_iid ++, 0, nand_save, nand_load, s); 496 + register_savevm("nand", -1, 0, nand_save, nand_load, s);
499 497
500 return s; 498 return s;
501 } 499 }
hw/tmp105.c
@@ -228,8 +228,6 @@ void tmp105_reset(i2c_slave *i2c) @@ -228,8 +228,6 @@ void tmp105_reset(i2c_slave *i2c)
228 tmp105_interrupt_update(s); 228 tmp105_interrupt_update(s);
229 } 229 }
230 230
231 -static int tmp105_iid = 0;  
232 -  
233 struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm) 231 struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm)
234 { 232 {
235 struct tmp105_s *s = (struct tmp105_s *) 233 struct tmp105_s *s = (struct tmp105_s *)
@@ -242,8 +240,7 @@ struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm) @@ -242,8 +240,7 @@ struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm)
242 240
243 tmp105_reset(&s->i2c); 241 tmp105_reset(&s->i2c);
244 242
245 - register_savevm("TMP105", tmp105_iid ++, 0,  
246 - tmp105_save, tmp105_load, s); 243 + register_savevm("TMP105", -1, 0, tmp105_save, tmp105_load, s);
247 244
248 return &s->i2c; 245 return &s->i2c;
249 } 246 }
hw/tsc2005.c
@@ -520,8 +520,6 @@ static int tsc2005_load(QEMUFile *f, void *opaque, int version_id) @@ -520,8 +520,6 @@ static int tsc2005_load(QEMUFile *f, void *opaque, int version_id)
520 return 0; 520 return 0;
521 } 521 }
522 522
523 -static int tsc2005_iid = 0;  
524 -  
525 void *tsc2005_init(qemu_irq pintdav) 523 void *tsc2005_init(qemu_irq pintdav)
526 { 524 {
527 struct tsc2005_state_s *s; 525 struct tsc2005_state_s *s;
@@ -551,8 +549,7 @@ void *tsc2005_init(qemu_irq pintdav) @@ -551,8 +549,7 @@ void *tsc2005_init(qemu_irq pintdav)
551 "QEMU TSC2005-driven Touchscreen"); 549 "QEMU TSC2005-driven Touchscreen");
552 550
553 qemu_register_reset((void *) tsc2005_reset, s); 551 qemu_register_reset((void *) tsc2005_reset, s);
554 - register_savevm("tsc2005", tsc2005_iid ++, 0,  
555 - tsc2005_save, tsc2005_load, s); 552 + register_savevm("tsc2005", -1, 0, tsc2005_save, tsc2005_load, s);
556 553
557 return s; 554 return s;
558 } 555 }
hw/tsc210x.c
@@ -1107,8 +1107,6 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id) @@ -1107,8 +1107,6 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id)
1107 return 0; 1107 return 0;
1108 } 1108 }
1109 1109
1110 -static int tsc2102_iid = 0;  
1111 -  
1112 struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio) 1110 struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio)
1113 { 1111 {
1114 struct tsc210x_state_s *s; 1112 struct tsc210x_state_s *s;
@@ -1154,7 +1152,7 @@ struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio) @@ -1154,7 +1152,7 @@ struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio)
1154 AUD_register_card(s->audio, s->name, &s->card); 1152 AUD_register_card(s->audio, s->name, &s->card);
1155 1153
1156 qemu_register_reset((void *) tsc210x_reset, s); 1154 qemu_register_reset((void *) tsc210x_reset, s);
1157 - register_savevm(s->name, tsc2102_iid ++, 0, 1155 + register_savevm(s->name, -1, 0,
1158 tsc210x_save, tsc210x_load, s); 1156 tsc210x_save, tsc210x_load, s);
1159 1157
1160 return &s->chip; 1158 return &s->chip;
@@ -1208,8 +1206,7 @@ struct uwire_slave_s *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, @@ -1208,8 +1206,7 @@ struct uwire_slave_s *tsc2301_init(qemu_irq penirq, qemu_irq kbirq,
1208 AUD_register_card(s->audio, s->name, &s->card); 1206 AUD_register_card(s->audio, s->name, &s->card);
1209 1207
1210 qemu_register_reset((void *) tsc210x_reset, s); 1208 qemu_register_reset((void *) tsc210x_reset, s);
1211 - register_savevm(s->name, tsc2102_iid ++, 0,  
1212 - tsc210x_save, tsc210x_load, s); 1209 + register_savevm(s->name, -1, 0, tsc210x_save, tsc210x_load, s);
1213 1210
1214 return &s->chip; 1211 return &s->chip;
1215 } 1212 }
hw/twl92230.c
@@ -876,8 +876,6 @@ static int menelaus_load(QEMUFile *f, void *opaque, int version_id) @@ -876,8 +876,6 @@ static int menelaus_load(QEMUFile *f, void *opaque, int version_id)
876 return 0; 876 return 0;
877 } 877 }
878 878
879 -static int menelaus_iid = 0;  
880 -  
881 i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq) 879 i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq)
882 { 880 {
883 struct menelaus_s *s = (struct menelaus_s *) 881 struct menelaus_s *s = (struct menelaus_s *)
@@ -894,8 +892,7 @@ i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq) @@ -894,8 +892,7 @@ i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq)
894 892
895 menelaus_reset(&s->i2c); 893 menelaus_reset(&s->i2c);
896 894
897 - register_savevm("menelaus", menelaus_iid ++,  
898 - 0, menelaus_save, menelaus_load, s); 895 + register_savevm("menelaus", -1, 0, menelaus_save, menelaus_load, s);
899 896
900 return &s->i2c; 897 return &s->i2c;
901 } 898 }
hw/wm8750.c
@@ -646,8 +646,6 @@ static int wm8750_load(QEMUFile *f, void *opaque, int version_id) @@ -646,8 +646,6 @@ static int wm8750_load(QEMUFile *f, void *opaque, int version_id)
646 return 0; 646 return 0;
647 } 647 }
648 648
649 -static int wm8750_iid = 0;  
650 -  
651 i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) 649 i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio)
652 { 650 {
653 struct wm8750_s *s = (struct wm8750_s *) 651 struct wm8750_s *s = (struct wm8750_s *)
@@ -659,7 +657,7 @@ i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) @@ -659,7 +657,7 @@ i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio)
659 AUD_register_card(audio, CODEC, &s->card); 657 AUD_register_card(audio, CODEC, &s->card);
660 wm8750_reset(&s->i2c); 658 wm8750_reset(&s->i2c);
661 659
662 - register_savevm(CODEC, wm8750_iid ++, 0, wm8750_save, wm8750_load, s); 660 + register_savevm(CODEC, -1, 0, wm8750_save, wm8750_load, s);
663 661
664 return &s->i2c; 662 return &s->i2c;
665 } 663 }
@@ -6060,6 +6060,8 @@ typedef struct SaveStateEntry { @@ -6060,6 +6060,8 @@ typedef struct SaveStateEntry {
6060 6060
6061 static SaveStateEntry *first_se; 6061 static SaveStateEntry *first_se;
6062 6062
  6063 +/* TODO: Individual devices generally have very little idea about the rest
  6064 + of the system, so instance_id should be removed/replaced. */
6063 int register_savevm(const char *idstr, 6065 int register_savevm(const char *idstr,
6064 int instance_id, 6066 int instance_id,
6065 int version_id, 6067 int version_id,
@@ -6073,7 +6075,7 @@ int register_savevm(const char *idstr, @@ -6073,7 +6075,7 @@ int register_savevm(const char *idstr,
6073 if (!se) 6075 if (!se)
6074 return -1; 6076 return -1;
6075 pstrcpy(se->idstr, sizeof(se->idstr), idstr); 6077 pstrcpy(se->idstr, sizeof(se->idstr), idstr);
6076 - se->instance_id = instance_id; 6078 + se->instance_id = (instance_id == -1) ? 0 : instance_id;
6077 se->version_id = version_id; 6079 se->version_id = version_id;
6078 se->save_state = save_state; 6080 se->save_state = save_state;
6079 se->load_state = load_state; 6081 se->load_state = load_state;
@@ -6082,8 +6084,13 @@ int register_savevm(const char *idstr, @@ -6082,8 +6084,13 @@ int register_savevm(const char *idstr,
6082 6084
6083 /* add at the end of list */ 6085 /* add at the end of list */
6084 pse = &first_se; 6086 pse = &first_se;
6085 - while (*pse != NULL) 6087 + while (*pse != NULL) {
  6088 + if (instance_id == -1
  6089 + && strcmp(se->idstr, (*pse)->idstr) == 0
  6090 + && se->instance_id <= (*pse)->instance_id)
  6091 + se->instance_id = (*pse)->instance_id + 1;
6086 pse = &(*pse)->next; 6092 pse = &(*pse)->next;
  6093 + }
6087 *pse = se; 6094 *pse = se;
6088 return 0; 6095 return 0;
6089 } 6096 }