[PATCH] tpm: tpm_infineon updated to latest interface changes

Apply the latest changes in the TPM interface to the Infineon TPM-driver.

Signed-off-by: Marcel Selhorst <selhorst@crypto.rub.de>
Acked-by: Kylie Hall <kjhall@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Marcel Selhorst and committed by Linus Torvalds e496f540 10685a95

+29 -29
+29 -29
drivers/char/tpm/tpm_infineon.c
··· 104 104 105 105 if (clear_wrfifo) { 106 106 for (i = 0; i < 4096; i++) { 107 - status = inb(chip->vendor->base + WRFIFO); 107 + status = inb(chip->vendor.base + WRFIFO); 108 108 if (status == 0xff) { 109 109 if (check == 5) 110 110 break; ··· 124 124 */ 125 125 i = 0; 126 126 do { 127 - status = inb(chip->vendor->base + RDFIFO); 128 - status = inb(chip->vendor->base + STAT); 127 + status = inb(chip->vendor.base + RDFIFO); 128 + status = inb(chip->vendor.base + STAT); 129 129 i++; 130 130 if (i == TPM_MAX_TRIES) 131 131 return -EIO; ··· 138 138 int status; 139 139 int i; 140 140 for (i = 0; i < TPM_MAX_TRIES; i++) { 141 - status = inb(chip->vendor->base + STAT); 141 + status = inb(chip->vendor.base + STAT); 142 142 /* check the status-register if wait_for_bit is set */ 143 143 if (status & 1 << wait_for_bit) 144 144 break; ··· 157 157 static void wait_and_send(struct tpm_chip *chip, u8 sendbyte) 158 158 { 159 159 wait(chip, STAT_XFE); 160 - outb(sendbyte, chip->vendor->base + WRFIFO); 160 + outb(sendbyte, chip->vendor.base + WRFIFO); 161 161 } 162 162 163 163 /* Note: WTX means Waiting-Time-Extension. Whenever the TPM needs more ··· 204 204 ret = wait(chip, STAT_RDA); 205 205 if (ret) 206 206 return -EIO; 207 - buf[i] = inb(chip->vendor->base + RDFIFO); 207 + buf[i] = inb(chip->vendor.base + RDFIFO); 208 208 } 209 209 210 210 if (buf[0] != TPM_VL_VER) { ··· 219 219 220 220 for (i = 0; i < size; i++) { 221 221 wait(chip, STAT_RDA); 222 - buf[i] = inb(chip->vendor->base + RDFIFO); 222 + buf[i] = inb(chip->vendor.base + RDFIFO); 223 223 } 224 224 225 225 if ((size == 0x6D00) && (buf[1] == 0x80)) { ··· 268 268 u8 count_high, count_low, count_4, count_3, count_2, count_1; 269 269 270 270 /* Disabling Reset, LP and IRQC */ 271 - outb(RESET_LP_IRQC_DISABLE, chip->vendor->base + CMD); 271 + outb(RESET_LP_IRQC_DISABLE, chip->vendor.base + CMD); 272 272 273 273 ret = empty_fifo(chip, 1); 274 274 if (ret) { ··· 319 319 320 320 static u8 tpm_inf_status(struct tpm_chip *chip) 321 321 { 322 - return inb(chip->vendor->base + STAT); 322 + return inb(chip->vendor.base + STAT); 323 323 } 324 324 325 325 static DEVICE_ATTR(pubek, S_IRUGO, tpm_show_pubek, NULL); ··· 346 346 .release = tpm_release, 347 347 }; 348 348 349 - static struct tpm_vendor_specific tpm_inf = { 349 + static const struct tpm_vendor_specific tpm_inf = { 350 350 .recv = tpm_inf_recv, 351 351 .send = tpm_inf_send, 352 352 .cancel = tpm_inf_cancel, ··· 375 375 int version[2]; 376 376 int productid[2]; 377 377 char chipname[20]; 378 + struct tpm_chip *chip; 378 379 379 380 /* read IO-ports through PnP */ 380 381 if (pnp_port_valid(dev, 0) && pnp_port_valid(dev, 1) && ··· 396 395 goto err_last; 397 396 } 398 397 /* publish my base address and request region */ 399 - tpm_inf.base = TPM_INF_BASE; 400 398 if (request_region 401 - (tpm_inf.base, TPM_INF_PORT_LEN, "tpm_infineon0") == NULL) { 399 + (TPM_INF_BASE, TPM_INF_PORT_LEN, "tpm_infineon0") == NULL) { 402 400 rc = -EINVAL; 403 401 goto err_last; 404 402 } 405 - if (request_region(TPM_INF_ADDR, TPM_INF_ADDR_LEN, 406 - "tpm_infineon0") == NULL) { 403 + if (request_region 404 + (TPM_INF_ADDR, TPM_INF_ADDR_LEN, "tpm_infineon0") == NULL) { 407 405 rc = -EINVAL; 408 406 goto err_last; 409 407 } ··· 442 442 443 443 /* configure TPM with IO-ports */ 444 444 outb(IOLIMH, TPM_INF_ADDR); 445 - outb(((tpm_inf.base >> 8) & 0xff), TPM_INF_DATA); 445 + outb(((TPM_INF_BASE >> 8) & 0xff), TPM_INF_DATA); 446 446 outb(IOLIML, TPM_INF_ADDR); 447 - outb((tpm_inf.base & 0xff), TPM_INF_DATA); 447 + outb((TPM_INF_BASE & 0xff), TPM_INF_DATA); 448 448 449 449 /* control if IO-ports are set correctly */ 450 450 outb(IOLIMH, TPM_INF_ADDR); ··· 452 452 outb(IOLIML, TPM_INF_ADDR); 453 453 iol = inb(TPM_INF_DATA); 454 454 455 - if ((ioh << 8 | iol) != tpm_inf.base) { 455 + if ((ioh << 8 | iol) != TPM_INF_BASE) { 456 456 dev_err(&dev->dev, 457 - "Could not set IO-ports to 0x%lx\n", 458 - tpm_inf.base); 457 + "Could not set IO-ports to 0x%x\n", 458 + TPM_INF_BASE); 459 459 rc = -EIO; 460 460 goto err_release_region; 461 461 } ··· 466 466 outb(DISABLE_REGISTER_PAIR, TPM_INF_ADDR); 467 467 468 468 /* disable RESET, LP and IRQC */ 469 - outb(RESET_LP_IRQC_DISABLE, tpm_inf.base + CMD); 469 + outb(RESET_LP_IRQC_DISABLE, TPM_INF_BASE + CMD); 470 470 471 471 /* Finally, we're done, print some infos */ 472 472 dev_info(&dev->dev, "TPM found: " 473 473 "config base 0x%x, " 474 474 "io base 0x%x, " 475 - "chip version %02x%02x, " 476 - "vendor id %x%x (Infineon), " 477 - "product id %02x%02x" 475 + "chip version 0x%02x%02x, " 476 + "vendor id 0x%x%x (Infineon), " 477 + "product id 0x%02x%02x" 478 478 "%s\n", 479 479 TPM_INF_ADDR, 480 480 TPM_INF_BASE, ··· 482 482 vendorid[0], vendorid[1], 483 483 productid[0], productid[1], chipname); 484 484 485 - rc = tpm_register_hardware(&dev->dev, &tpm_inf); 486 - if (rc < 0) { 487 - rc = -ENODEV; 485 + if (!(chip = tpm_register_hardware(&dev->dev, &tpm_inf))) { 488 486 goto err_release_region; 489 487 } 488 + chip->vendor.base = TPM_INF_BASE; 490 489 return 0; 491 490 } else { 492 491 rc = -ENODEV; ··· 493 494 } 494 495 495 496 err_release_region: 496 - release_region(tpm_inf.base, TPM_INF_PORT_LEN); 497 + release_region(TPM_INF_BASE, TPM_INF_PORT_LEN); 497 498 release_region(TPM_INF_ADDR, TPM_INF_ADDR_LEN); 498 499 499 500 err_last: ··· 505 506 struct tpm_chip *chip = pnp_get_drvdata(dev); 506 507 507 508 if (chip) { 508 - release_region(chip->vendor->base, TPM_INF_PORT_LEN); 509 + release_region(TPM_INF_BASE, TPM_INF_PORT_LEN); 510 + release_region(TPM_INF_ADDR, TPM_INF_ADDR_LEN); 509 511 tpm_remove_hardware(chip->dev); 510 512 } 511 513 } ··· 538 538 539 539 MODULE_AUTHOR("Marcel Selhorst <selhorst@crypto.rub.de>"); 540 540 MODULE_DESCRIPTION("Driver for Infineon TPM SLD 9630 TT 1.1 / SLB 9635 TT 1.2"); 541 - MODULE_VERSION("1.7"); 541 + MODULE_VERSION("1.8"); 542 542 MODULE_LICENSE("GPL");