#define FW_OPT_FALLBACK                0
 #endif
 #define FW_OPT_NO_WARN (1U << 3)
+#define FW_OPT_NOCACHE (1U << 4)
 
 struct firmware_cache {
        /* firmware_buf instance will be added into the below list */
         * should be fixed in devres or driver core.
         */
        /* don't cache firmware handled without uevent */
-       if (device && (opt_flags & FW_OPT_UEVENT))
+       if (device && (opt_flags & FW_OPT_UEVENT) &&
+           !(opt_flags & FW_OPT_NOCACHE))
                fw_add_devm_name(device, buf->fw_id);
 
        /*
         * After caching firmware image is started, let it piggyback
         * on request firmware.
         */
-       if (buf->fwc->state == FW_LOADER_START_CACHE) {
+       if (!(opt_flags & FW_OPT_NOCACHE) &&
+           buf->fwc->state == FW_LOADER_START_CACHE) {
                if (fw_cache_piggyback_on_request(buf->fw_id))
                        kref_get(&buf->ref);
        }