--- drivers/clk/bcm/clk-raspberrypi.c.orig 2023-12-23 09:43:27.536046553 -0800 +++ drivers/clk/bcm/clk-raspberrypi.c 2023-12-23 09:44:47.945092107 -0800 @@ -373,7 +373,7 @@ struct raspberrypi_clk_variant *variant; if (clks->id >= RPI_FIRMWARE_NUM_CLK_ID) { - dev_err(rpi->dev, "Unknown clock id: %u (max: %u)\n", + dev_warn(rpi->dev, "Unknown clock id: %u (max: %u)\n", clks->id, RPI_FIRMWARE_NUM_CLK_ID - 1); return -EINVAL; } +++ fs/super.c 2024-03-29 12:15:23.175870402 -0700 @@ -1484,7 +1484,7 @@ bdev = blkdev_get_by_dev(sb->s_dev, mode, sb, &fs_holder_ops); if (IS_ERR(bdev)) { if (fc) - errorf(fc, "%s: Can't open blockdev", fc->source); + warnf(fc, "%s: Can't open blockdev", fc->source); return PTR_ERR(bdev); } @@ -1547,7 +1547,7 @@ error = lookup_bdev(fc->source, &dev); if (error) { - errorf(fc, "%s: Can't lookup blockdev", fc->source); + warnf(fc, "%s: Can't lookup blockdev", fc->source); return error; } --- drivers/usb/dwc2/gadget.c.orig 2024-03-27 12:03:08.000000000 -0700 +++ drivers/usb/dwc2/gadget.c 2024-04-03 19:45:00.635428213 -0700 @@ -3412,6 +3412,8 @@ usbcfg &= ~GUSBCFG_TOUTCAL_MASK; usbcfg |= GUSBCFG_TOUTCAL(7); + usbcfg |= GUSBCFG_FORCEDEVMODE; + /* remove the HNP/SRP and set the PHY */ usbcfg &= ~(GUSBCFG_SRPCAP | GUSBCFG_HNPCAP); dwc2_writel(hsotg, usbcfg, GUSBCFG); --- drivers/usb/gadget/legacy/hid.c.orig 2024-03-27 12:03:08.000000000 -0700 +++ drivers/usb/gadget/legacy/hid.c 2024-04-03 19:45:00.635428213 -0700 @@ -267,6 +267,48 @@ }, }; +/* Additional goop to define a USB raw HID gadget */ + +static struct hidg_func_descriptor raw_hid_data = { + .subclass = 0, /* No subclass */ + .protocol = 0, /* No protocol */ + .report_length = 64, + .report_desc_length = 33, + .report_desc = { +0x06, 0x00, 0xFF, // Usage Page = 0xFF00 (Vendor Defined Page 1) +0x09, 0x01, // Usage (Vendor Usage 1) +0xA1, 0x01, // Collection (Application) +// Input report +0x19, 0x01, // Usage Minimum +0x29, 0x40, // Usage Maximum +0x15, 0x00, // Logical Minimum +0x26, 0xFF, 0x00, // Logical Maximum +0x75, 0x08, // Report Size: 8-bit field size +0x95, 64, // Report Count +0x81, 0x02, // Input (Data, Array, Abs) +// Output report +0x19, 0x01, // Usage Minimum +0x29, 0x40, // Usage Maximum +0x75, 0x08, // Report Size: 8-bit field size +0x95, 64, // Report Count +0x91, 0x02, // Output (Data, Array, Abs) +0xC0 // End Collection + } +}; + +static struct platform_device raw_hid = { + .name = "hidg", + .id = 0, + .num_resources = 0, + .resource = 0, + .dev.platform_data = &raw_hid_data, +}; + +int __init init_raw_hid(void) +{ + pr_info("g_hid: loading raw HID descriptor\n"); + return platform_device_register(&raw_hid); +} MODULE_DESCRIPTION(DRIVER_DESC); MODULE_AUTHOR("Fabien Chouteau, Peter Korsgaard"); @@ -276,6 +318,8 @@ { int status; + init_raw_hid(); + status = platform_driver_probe(&hidg_plat_driver, hidg_plat_driver_probe); if (status < 0)