Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq
[pandora-kernel.git] / drivers / char / tpm / tpm_atmel.h
index 3c5b9a8..aefd683 100644 (file)
 #define atmel_putb(val, chip, offset) writeb(val, chip->vendor->iobase + offset)
 #define atmel_request_region request_mem_region
 #define atmel_release_region release_mem_region
-static inline void atmel_put_base_addr(struct tpm_vendor_specific *vendor)
+
+static inline void atmel_put_base_addr(void __iomem *iobase)
 {
-       iounmap(vendor->iobase);
+       iounmap(iobase);
 }
 
-static int atmel_get_base_addr(struct tpm_vendor_specific *vendor)
+static void __iomem * atmel_get_base_addr(unsigned long *base, int *region_size)
 {
        struct device_node *dn;
        unsigned long address, size;
-       unsigned int *reg;
+       const unsigned int *reg;
        int reglen;
        int naddrc;
        int nsizec;
@@ -44,14 +45,14 @@ static int atmel_get_base_addr(struct tpm_vendor_specific *vendor)
        dn = of_find_node_by_name(NULL, "tpm");
 
        if (!dn)
-               return 1;
+               return NULL;
 
        if (!device_is_compatible(dn, "AT97SC3201")) {
                of_node_put(dn);
-               return 1;
+               return NULL;
        }
 
-       reg = (unsigned int *) get_property(dn, "reg", &reglen);
+       reg = get_property(dn, "reg", &reglen);
        naddrc = prom_n_addr_cells(dn);
        nsizec = prom_n_size_cells(dn);
 
@@ -69,10 +70,9 @@ static int atmel_get_base_addr(struct tpm_vendor_specific *vendor)
        else
                size = reg[naddrc];
 
-       vendor->base = address;
-       vendor->region_size = size;
-       vendor->iobase = ioremap(address, size);
-       return 0;
+       *base = address;
+       *region_size = size;
+       return ioremap(*base, *region_size);
 }
 #else
 #define atmel_getb(chip, offset) inb(chip->vendor->base + offset)
@@ -105,25 +105,24 @@ static int atmel_verify_tpm11(void)
        return 0;
 }
 
-static inline void atmel_put_base_addr(struct tpm_vendor_specific *vendor)
+static inline void atmel_put_base_addr(void __iomem *iobase)
 {
 }
 
 /* Determine where to talk to device */
-static unsigned long atmel_get_base_addr(struct tpm_vendor_specific
-                                        *vendor)
+static void __iomem * atmel_get_base_addr(unsigned long *base, int *region_size)
 {
        int lo, hi;
 
        if (atmel_verify_tpm11() != 0)
-               return 1;
+               return NULL;
 
        lo = tpm_read_index(TPM_ADDR, TPM_ATMEL_BASE_ADDR_LO);
        hi = tpm_read_index(TPM_ADDR, TPM_ATMEL_BASE_ADDR_HI);
 
-       vendor->base = (hi << 8) | lo;
-       vendor->region_size = 2;
+       *base = (hi << 8) | lo;
+       *region_size = 2;
 
-       return 0;
+       return ioport_map(*base, *region_size);
 }
 #endif