~emersion/drmdb

cc28ac127d558fa68edbc8acb420375bad0bf60a — Simon Ser 4 months ago 7e5d2c2
Add host1x bus support

References: https://gitlab.freedesktop.org/emersion/drm_info/-/commit/c18976c448228c734fc72687a80156f12d52c58c
3 files changed, 23 insertions(+), 2 deletions(-)

M database/fs.go
M drmtree/drmtree.go
M server.go
M database/fs.go => database/fs.go +9 -0
@@ 48,6 48,15 @@ func generateKey(n *drmtree.Node) (string, error) {
			b.WriteByte(0)
			b.WriteString(compat)
		}
	case *drmtree.DeviceHost1x:
		b.WriteString("host1x")
		if len(dev.Compatible) == 0 {
			return "", fmt.Errorf("host1x device is missing compatibility info")
		}
		for _, compat := range dev.Compatible {
			b.WriteByte(0)
			b.WriteString(compat)
		}
	default:
		return "", fmt.Errorf("device bus type %v not supported", n.Device.BusType)
	}

M drmtree/drmtree.go => drmtree/drmtree.go +12 -0
@@ 123,6 123,10 @@ type DeviceUSB struct {
	Product uint16 `json:"product"`
}

type DeviceHost1x struct {
	Compatible []string `json:"compatible"`
}

type Device struct {
	BusType    drm.BusType `json:"bus_type"`
	DeviceData interface{} `json:"device_data,omitempty"`


@@ 156,6 160,12 @@ func (dev *Device) UnmarshalJSON(b []byte) error {
			return err
		}
		rawDev.DeviceData = &devUSB
	case drm.BusHost1x:
		var devHost1x DeviceHost1x
		if err := json.Unmarshal(deviceData, &devHost1x); err != nil {
			return err
		}
		rawDev.DeviceData = &devHost1x
	default:
		rawDev.DeviceData = nil
	}


@@ 172,6 182,8 @@ func (dev *Device) BusID() string {
		return strings.Join(dev.Compatible, "+")
	case *DeviceUSB:
		return fmt.Sprintf("%04X:%04X", dev.Vendor, dev.Product)
	case *DeviceHost1x:
		return strings.Join(dev.Compatible, "+")
	default:
		return ""
	}

M server.go => server.go +2 -2
@@ 204,7 204,7 @@ func New() *echo.Echo {
			case *drmtree.DevicePCI:
				data.Vendor = pciVendors[uint16(dev.Vendor)]
				data.Name = pciDevices[dev.Vendor<<16|dev.Device]
			case *drmtree.DevicePlatform:
			case *drmtree.DevicePlatform, *drmtree.DeviceHost1x:
				// No-op
			default:
				return nil


@@ 529,7 529,7 @@ func New() *echo.Echo {
			case *drmtree.DevicePCI:
				data.Vendor = pciVendors[uint16(dev.Vendor)]
				data.Name = pciDevices[dev.Vendor<<16|dev.Device]
			case *drmtree.DevicePlatform:
			case *drmtree.DevicePlatform, *drmtree.DeviceHost1x:
				// No-op
			default:
				return nil