gdsys: P1022: Fix unused variable warnings
[oweals/u-boot.git] / board / gdsys / p1022 / controlcenterd-id.c
index 7e13c9051cbc815762f930df38678b8bb0770d1a..db8a917563736ec2aa60d2bd250d7b620cc307cd 100644 (file)
@@ -2,20 +2,7 @@
  * (C) Copyright 2013
  * Reinhard Pfau, Guntermann & Drunck GmbH, reinhard.pfau@gdsys.cc
  *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 /* TODO: some more #ifdef's to avoid unneeded code for stage 1 / stage 2 */
 #define CCDM_AUTO_FIRST_STAGE
 #endif
 
-/* enums from TCG specs */
-enum {
-       /* capability areas */
-       TPM_CAP_NV_INDEX        = 0x00000011,
-       TPM_CAP_HANDLE          = 0x00000014,
-       /* resource types */
-       TPM_RT_KEY      = 0x00000001,
-};
-
 /* CCDM specific contants */
 enum {
        /* NV indices */
@@ -86,6 +64,11 @@ enum {
        ESDHC_BOOT_IMAGE_ENTRY_OFS      = 0x60,
 };
 
+enum {
+       I2C_SOC_0 = 0,
+       I2C_SOC_1 = 1,
+};
+
 struct key_program {
        uint32_t magic;
        uint32_t code_crc;
@@ -173,33 +156,8 @@ static const uint8_t prg_stage1_prepare[] = {
        0x81, 0x2e, 0x30, 0x00, /* opcode: LOAD PCR3, f3 */
 };
 
-static const uint8_t prg_stage2_prepare[] = {
-       0x00, 0x80, 0x00, 0x00, /* opcode: SYNC PCR0 */
-       0x00, 0x84, 0x00, 0x00, /* opcode: SYNC PCR1 */
-       0x00, 0x88, 0x00, 0x00, /* opcode: SYNC PCR2 */
-       0x00, 0x8c, 0x00, 0x00, /* opcode: SYNC PCR3 */
-       0x00, 0x90, 0x00, 0x00, /* opcode: SYNC PCR4 */
-};
-
-static const uint8_t prg_stage2_success[] = {
-       0x81, 0x02, 0x40, 0x14, /* opcode: LOAD PCR4, #<20B data> */
-       0x48, 0xfd, 0x95, 0x17, 0xe7, 0x54, 0x6b, 0x68, /* data */
-       0x92, 0x31, 0x18, 0x05, 0xf8, 0x58, 0x58, 0x3c, /* data */
-       0xe4, 0xd2, 0x81, 0xe0, /* data */
-};
-
-static const uint8_t prg_stage_fail[] = {
-       0x81, 0x01, 0x00, 0x14, /* opcode: LOAD v0, #<20B data> */
-       0xc0, 0x32, 0xad, 0xc1, 0xff, 0x62, 0x9c, 0x9b, /* data */
-       0x66, 0xf2, 0x27, 0x49, 0xad, 0x66, 0x7e, 0x6b, /* data */
-       0xea, 0xdf, 0x14, 0x4b, /* data */
-       0x81, 0x42, 0x30, 0x00, /* opcode: LOAD PCR3, v0 */
-       0x81, 0x42, 0x40, 0x00, /* opcode: LOAD PCR4, v0 */
-};
-
 static const uint8_t vendor[] = "Guntermann & Drunck";
 
-
 /**
  * @brief read a bunch of data from MMC into memory.
  *
@@ -227,18 +185,18 @@ static int ccdm_mmc_read(struct mmc *mmc, u64 src, u8 *dst, int size)
        ofs = src % blk_len;
 
        if (ofs) {
-               n = mmc->block_dev.block_read(mmc->block_dev.dev, block_no++, 1,
+               n = mmc->block_dev.block_read(&mmc->block_dev, block_no++, 1,
                        tmp_buf);
                if (!n)
                        goto failure;
-               result = min(size, blk_len - ofs);
+               result = min(size, (int)(blk_len - ofs));
                memcpy(dst, tmp_buf + ofs, result);
                dst += result;
                size -= result;
        }
        cnt = size / blk_len;
        if (cnt) {
-               n = mmc->block_dev.block_read(mmc->block_dev.dev, block_no, cnt,
+               n = mmc->block_dev.block_read(&mmc->block_dev, block_no, cnt,
                        dst);
                if (n != cnt)
                        goto failure;
@@ -248,7 +206,7 @@ static int ccdm_mmc_read(struct mmc *mmc, u64 src, u8 *dst, int size)
                block_no += cnt;
        }
        if (size) {
-               n = mmc->block_dev.block_read(mmc->block_dev.dev, block_no++, 1,
+               n = mmc->block_dev.block_read(&mmc->block_dev, block_no++, 1,
                        tmp_buf);
                if (!n)
                        goto failure;
@@ -731,7 +689,8 @@ do_bin_func:
                                src_buf = buf;
                                for (ptr = (uint8_t *)src_buf, i = 20; i > 0;
                                        i -= data_size, ptr += data_size)
-                                       memcpy(ptr, data, min(i, data_size));
+                                       memcpy(ptr, data,
+                                              min_t(size_t, i, data_size));
                        }
                }
                bin_func(dst_reg->digest, src_buf, 20);
@@ -926,11 +885,12 @@ static struct key_program *load_key_chunk(const char *ifname,
        struct key_program header;
        uint32_t crc;
        uint8_t buf[12];
-       int i;
+       loff_t i;
 
        if (fs_set_blk_dev(ifname, dev_part_str, fs_type))
                goto failure;
-       i = fs_read(path, (ulong)buf, 0, 12);
+       if (fs_read(path, (ulong)buf, 0, 12, &i) < 0)
+               goto failure;
        if (i < 12)
                goto failure;
        header.magic = get_unaligned_be32(buf);
@@ -945,8 +905,9 @@ static struct key_program *load_key_chunk(const char *ifname,
                goto failure;
        if (fs_set_blk_dev(ifname, dev_part_str, fs_type))
                goto failure;
-       i = fs_read(path, (ulong)result, 0,
-               sizeof(struct key_program) + header.code_size);
+       if (fs_read(path, (ulong)result, 0,
+                   sizeof(struct key_program) + header.code_size, &i) < 0)
+               goto failure;
        if (i <= 0)
                goto failure;
        *result = header;
@@ -1027,6 +988,30 @@ static int first_stage_init(void)
 #endif
 
 #ifdef CCDM_SECOND_STAGE
+static const uint8_t prg_stage2_prepare[] = {
+       0x00, 0x80, 0x00, 0x00, /* opcode: SYNC PCR0 */
+       0x00, 0x84, 0x00, 0x00, /* opcode: SYNC PCR1 */
+       0x00, 0x88, 0x00, 0x00, /* opcode: SYNC PCR2 */
+       0x00, 0x8c, 0x00, 0x00, /* opcode: SYNC PCR3 */
+       0x00, 0x90, 0x00, 0x00, /* opcode: SYNC PCR4 */
+};
+
+static const uint8_t prg_stage2_success[] = {
+       0x81, 0x02, 0x40, 0x14, /* opcode: LOAD PCR4, #<20B data> */
+       0x48, 0xfd, 0x95, 0x17, 0xe7, 0x54, 0x6b, 0x68, /* data */
+       0x92, 0x31, 0x18, 0x05, 0xf8, 0x58, 0x58, 0x3c, /* data */
+       0xe4, 0xd2, 0x81, 0xe0, /* data */
+};
+
+static const uint8_t prg_stage_fail[] = {
+       0x81, 0x01, 0x00, 0x14, /* opcode: LOAD v0, #<20B data> */
+       0xc0, 0x32, 0xad, 0xc1, 0xff, 0x62, 0x9c, 0x9b, /* data */
+       0x66, 0xf2, 0x27, 0x49, 0xad, 0x66, 0x7e, 0x6b, /* data */
+       0xea, 0xdf, 0x14, 0x4b, /* data */
+       0x81, 0x42, 0x30, 0x00, /* opcode: LOAD PCR3, v0 */
+       0x81, 0x42, 0x40, 0x00, /* opcode: LOAD PCR4, v0 */
+};
+
 static int second_stage_init(void)
 {
        static const char mac_suffix[] = ".mac";
@@ -1037,7 +1022,7 @@ static int second_stage_init(void)
        const char *image_path = "/ccdm.itb";
        char *mac_path = NULL;
        ulong image_addr;
-       size_t image_size;
+       loff_t image_size;
        uint32_t err;
 
        printf("CCDM S2\n");
@@ -1079,10 +1064,11 @@ static int second_stage_init(void)
        image_addr = (ulong)get_image_location();
        if (fs_set_blk_dev("mmc", mmcdev, FS_TYPE_EXT))
                goto failure;
-       image_size = fs_read(image_path, image_addr, 0, 0);
+       if (fs_read(image_path, image_addr, 0, 0, &image_size) < 0)
+               goto failure;
        if (image_size <= 0)
                goto failure;
-       printf("CCDM image found on %s, %d bytes\n", mmcdev, image_size);
+       printf("CCDM image found on %s, %lld bytes\n", mmcdev, image_size);
 
        hmac_blob = load_key_chunk("mmc", mmcdev, FS_TYPE_EXT, mac_path);
        if (!hmac_blob) {
@@ -1156,7 +1142,7 @@ static void ccdm_hang(void)
        int j;
 #endif
 
-       I2C_SET_BUS(0);
+       I2C_SET_BUS(I2C_SOC_0);
        pca9698_direction_output(0x22, 0, 0); /* Finder */
        pca9698_direction_output(0x22, 4, 0); /* Status */
 
@@ -1189,8 +1175,8 @@ int startup_ccdm_id_module(void)
        int result = 0;
        unsigned int orig_i2c_bus;
 
-       orig_i2c_bus = I2C_GET_BUS();
-       I2C_SET_BUS(1);
+       orig_i2c_bus = i2c_get_bus_num();
+       i2c_set_bus_num(I2C_SOC_1);
 
        /* goto end; */
 
@@ -1216,7 +1202,7 @@ int startup_ccdm_id_module(void)
 failure:
        result = 1;
 end:
-       I2C_SET_BUS(orig_i2c_bus);
+       i2c_set_bus_num(orig_i2c_bus);
        if (result)
                ccdm_hang();