Lines Matching full:chunk
43 static bool ntpfw_verify_chunk(struct device *dev, const struct ntpfw_chunk *chunk, size_t buf_size) in ntpfw_verify_chunk() argument
47 if (buf_size <= sizeof(*chunk)) { in ntpfw_verify_chunk()
48 dev_err(dev, "Failed to load firmware: chunk size too big\n"); in ntpfw_verify_chunk()
52 if (chunk->step != 2 && chunk->step != 5) { in ntpfw_verify_chunk()
53 dev_err(dev, "Failed to load firmware: invalid chunk step: %d\n", chunk->step); in ntpfw_verify_chunk()
57 chunk_size = be16_to_cpu(chunk->length); in ntpfw_verify_chunk()
59 dev_err(dev, "Failed to load firmware: invalid chunk length\n"); in ntpfw_verify_chunk()
63 if (chunk_size % chunk->step) { in ntpfw_verify_chunk()
64 dev_err(dev, "Failed to load firmware: chunk length and step mismatch\n"); in ntpfw_verify_chunk()
71 static int ntpfw_send_chunk(struct i2c_client *i2c, const struct ntpfw_chunk *chunk) in ntpfw_send_chunk() argument
75 size_t length = be16_to_cpu(chunk->length); in ntpfw_send_chunk()
77 for (i = 0; i < length; i += chunk->step) { in ntpfw_send_chunk()
78 ret = i2c_master_send(i2c, &chunk->data[i], chunk->step); in ntpfw_send_chunk()
79 if (ret != chunk->step) { in ntpfw_send_chunk()
91 const struct ntpfw_chunk *chunk; in ntpfw_load() local
113 chunk = (struct ntpfw_chunk *)data; in ntpfw_load()
115 if (!ntpfw_verify_chunk(dev, chunk, leftover)) { in ntpfw_load()
120 ret = ntpfw_send_chunk(i2c, chunk); in ntpfw_load()
124 data += be16_to_cpu(chunk->length) + sizeof(*chunk); in ntpfw_load()
125 leftover -= be16_to_cpu(chunk->length) + sizeof(*chunk); in ntpfw_load()