mirror of
https://github.com/luckfox-eng29/kvm.git
synced 2026-01-18 03:28:19 +01:00
Add support for Luckfox PicoKVM
Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
This commit is contained in:
@@ -15,7 +15,7 @@ var (
|
||||
VendorId: "0x1d6b", //The Linux Foundation
|
||||
ProductId: "0x0104", //Multifunction Composite Gadget
|
||||
SerialNumber: "",
|
||||
Manufacturer: "JetKVM",
|
||||
Manufacturer: "KVM",
|
||||
Product: "USB Emulation Device",
|
||||
strictMode: true,
|
||||
}
|
||||
@@ -25,7 +25,7 @@ var (
|
||||
Keyboard: true,
|
||||
MassStorage: true,
|
||||
}
|
||||
usbGadgetName = "jetkvm"
|
||||
usbGadgetName = "kvm"
|
||||
usbGadget *UsbGadget
|
||||
)
|
||||
|
||||
@@ -109,7 +109,7 @@ func TestUsbGadgetUDCNotBoundAfterReportDescrChanged(t *testing.T) {
|
||||
udc := udcs[0]
|
||||
assert.NotNil(udc, "UDC should exist")
|
||||
|
||||
udcStr, err := os.ReadFile("/sys/kernel/config/usb_gadget/jetkvm/UDC")
|
||||
udcStr, err := os.ReadFile("/sys/kernel/config/usb_gadget/kvm/UDC")
|
||||
assert.Nil(err, "usb_gadget/UDC should exist")
|
||||
assert.Equal(strings.TrimSpace(udc), strings.TrimSpace(string(udcStr)), "UDC should be the same")
|
||||
}
|
||||
|
||||
@@ -34,7 +34,8 @@ var defaultGadgetConfig = map[string]gadgetConfigItem{
|
||||
"bcdDevice": "0100",
|
||||
},
|
||||
configAttrs: gadgetAttributes{
|
||||
"MaxPower": "250", // in unit of 2mA
|
||||
"MaxPower": "250", // in unit of 2mA
|
||||
"bmAttributes": "0xa0", // 0x80 = bus-powered, 0xa0 = bus-powered + remote wakeup
|
||||
},
|
||||
},
|
||||
"base_info": {
|
||||
@@ -43,8 +44,8 @@ var defaultGadgetConfig = map[string]gadgetConfigItem{
|
||||
configPath: []string{"strings", "0x409"},
|
||||
attrs: gadgetAttributes{
|
||||
"serialnumber": "",
|
||||
"manufacturer": "JetKVM",
|
||||
"product": "JetKVM USB Emulation Device",
|
||||
"manufacturer": "KVM",
|
||||
"product": "KVM USB Emulation Device",
|
||||
},
|
||||
configAttrs: gadgetAttributes{
|
||||
"configuration": "Config 1: HID",
|
||||
@@ -59,6 +60,23 @@ var defaultGadgetConfig = map[string]gadgetConfigItem{
|
||||
// mass storage
|
||||
"mass_storage_base": massStorageBaseConfig,
|
||||
"mass_storage_lun0": massStorageLun0Config,
|
||||
// audio
|
||||
"audio": {
|
||||
order: 4000,
|
||||
device: "uac1.usb0",
|
||||
path: []string{"functions", "uac1.usb0"},
|
||||
configPath: []string{"uac1.usb0"},
|
||||
attrs: gadgetAttributes{
|
||||
"p_chmask": "3",
|
||||
"p_srate": "48000",
|
||||
"p_ssize": "2",
|
||||
"p_volume_present": "0",
|
||||
"c_chmask": "3",
|
||||
"c_srate": "48000",
|
||||
"c_ssize": "2",
|
||||
"c_volume_present": "0",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
func (u *UsbGadget) isGadgetConfigItemEnabled(itemKey string) bool {
|
||||
@@ -73,6 +91,8 @@ func (u *UsbGadget) isGadgetConfigItemEnabled(itemKey string) bool {
|
||||
return u.enabledDevices.MassStorage
|
||||
case "mass_storage_lun0":
|
||||
return u.enabledDevices.MassStorage
|
||||
case "audio":
|
||||
return u.enabledDevices.Audio
|
||||
default:
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -18,9 +18,8 @@ var massStorageLun0Config = gadgetConfigItem{
|
||||
"ro": "1",
|
||||
"removable": "1",
|
||||
"file": "\n",
|
||||
// the additional whitespace is intentional to avoid the "JetKVM V irtual Media" string
|
||||
// https://github.com/jetkvm/rv1106-system/blob/778133a1c153041e73f7de86c9c434a2753ea65d/sysdrv/source/uboot/u-boot/drivers/usb/gadget/f_mass_storage.c#L2556
|
||||
// the additional whitespace is intentional to avoid the "KVM V irtual Media" string
|
||||
// Vendor (8 chars), product (16 chars)
|
||||
"inquiry_string": "JetKVM Virtual Media",
|
||||
"inquiry_string": "KVM Virtual Media",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -9,7 +9,8 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/jetkvm/kvm/internal/logging"
|
||||
"kvm/internal/logging"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
@@ -19,6 +20,7 @@ type Devices struct {
|
||||
RelativeMouse bool `json:"relative_mouse"`
|
||||
Keyboard bool `json:"keyboard"`
|
||||
MassStorage bool `json:"mass_storage"`
|
||||
Audio bool `json:"audio"`
|
||||
}
|
||||
|
||||
// Config is a struct that represents the customizations for a USB gadget.
|
||||
|
||||
Reference in New Issue
Block a user