Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Input: goodix - switch to using cleanup functions in firmware code

Start using __free(firmware) to simplify the code and error handling.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

+15 -14
+15 -14
drivers/input/touchscreen/goodix_fwupload.c
··· 188 188 189 189 static int goodix_firmware_upload(struct goodix_ts_data *ts) 190 190 { 191 - const struct firmware *fw; 192 191 char fw_name[64]; 193 192 const u8 *data; 194 193 int error; 195 194 196 195 snprintf(fw_name, sizeof(fw_name), "goodix/%s", ts->firmware_name); 197 196 197 + const struct firmware *fw __free(firmware) = NULL; 198 198 error = request_firmware(&fw, fw_name, &ts->client->dev); 199 199 if (error) { 200 200 dev_err(&ts->client->dev, "Firmware request error %d\n", error); ··· 203 203 204 204 error = goodix_firmware_verify(&ts->client->dev, fw); 205 205 if (error) 206 - goto release; 206 + return error; 207 207 208 208 error = goodix_reset_no_int_sync(ts); 209 209 if (error) 210 - goto release; 210 + return error; 211 211 212 212 error = goodix_enter_upload_mode(ts->client); 213 213 if (error) 214 - goto release; 214 + return error; 215 215 216 216 /* Select SRAM bank 0 and upload section 1 & 2 */ 217 217 error = goodix_i2c_write_u8(ts->client, 218 218 GOODIX_REG_MISCTL_SRAM_BANK, 0x00); 219 219 if (error) 220 - goto release; 220 + return error; 221 221 222 222 data = fw->data + GOODIX_FW_HEADER_LENGTH; 223 223 error = goodix_i2c_write(ts->client, GOODIX_FW_UPLOAD_ADDRESS, 224 224 data, 2 * GOODIX_FW_SECTION_LENGTH); 225 225 if (error) 226 - goto release; 226 + return error; 227 227 228 228 /* Select SRAM bank 1 and upload section 3 & 4 */ 229 229 error = goodix_i2c_write_u8(ts->client, 230 230 GOODIX_REG_MISCTL_SRAM_BANK, 0x01); 231 231 if (error) 232 - goto release; 232 + return error; 233 233 234 234 data += 2 * GOODIX_FW_SECTION_LENGTH; 235 235 error = goodix_i2c_write(ts->client, GOODIX_FW_UPLOAD_ADDRESS, 236 236 data, 2 * GOODIX_FW_SECTION_LENGTH); 237 237 if (error) 238 - goto release; 238 + return error; 239 239 240 240 /* Select SRAM bank 2 and upload the DSP firmware */ 241 241 error = goodix_i2c_write_u8(ts->client, 242 242 GOODIX_REG_MISCTL_SRAM_BANK, 0x02); 243 243 if (error) 244 - goto release; 244 + return error; 245 245 246 246 data += 2 * GOODIX_FW_SECTION_LENGTH; 247 247 error = goodix_i2c_write(ts->client, GOODIX_FW_UPLOAD_ADDRESS, 248 248 data, GOODIX_FW_DSP_LENGTH); 249 249 if (error) 250 - goto release; 250 + return error; 251 251 252 252 error = goodix_start_firmware(ts->client); 253 253 if (error) 254 - goto release; 254 + return error; 255 255 256 256 error = goodix_int_sync(ts); 257 - release: 258 - release_firmware(fw); 259 - return error; 257 + if (error) 258 + return error; 259 + 260 + return 0; 260 261 } 261 262 262 263 static int goodix_prepare_bak_ref(struct goodix_ts_data *ts)