drivers issueshttps://gitlab.redox-os.org/redox-os/drivers/-/issues2024-03-17T23:48:03Zhttps://gitlab.redox-os.org/redox-os/drivers/-/issues/40Community hardware device porting2024-03-17T23:48:03ZRibbonCommunity hardware device portingThis tracking issue covers the devices from the community that needs a driver.
Unfortunately we can't know the most sold device models of the world to measure our device porting priority, thus we will use our community data to measure o...This tracking issue covers the devices from the community that needs a driver.
Unfortunately we can't know the most sold device models of the world to measure our device porting priority, thus we will use our community data to measure our device priorities, if you find a "device model users" survey (similar to [Debian Popularity Contest](https://popcon.debian.org/) and [Steam Hardware/Software Survey](https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam)), please comment.
If you want to contribute to this table, install [pciutils](https://mj.ucw.cz/sw/pciutils/) on your Linux (it should have a package on your distribution), run `lspci -v` to see your hardware devices and their kernel drivers and give the results of these items on each device:
- The first field (each device has an unique name for this item)
- Kernel driver in use
- Kernel modules
If you are unsure of what to do, you can copy and paste the entire text to a code block and comment.
| **Device model** | **Kernel driver** | **Kernel module** | **There's a Redox driver?** |
|------------------|-------------------|-------------------|-----------------------------|
| Realtek RTL8821CE 802.11ac (Wi-Fi) | rtw_8821ce | rtw88_8821ce | No |
| Intel Ice Lake-LP SPI Controller | intel-spi | spi_intel_pci | No |
| Intel Ice Lake-LP SMBus Controller | i801_smbus | i2c_i801 | No |
| Intel Ice Lake-LP Smart Sound Technology Audio Controller | snd_hda_intel | snd_hda_intel, snd_sof_pci_intel_icl | No |
| Intel Ice Lake-LP Serial IO SPI Controller | intel-lpss | No | No |
| Intel Ice Lake-LP Serial IO UART Controller | intel-lpss | No | No |
| Intel Ice Lake-LP Serial IO I2C Controller | intel-lpss | No | No |
| Ice Lake-LP USB 3.1 xHCI Host Controller | xhci_hcd | No | No |
| Intel Processor Power and Thermal Controller | proc_thermal | processor_thermal_device_pci_legacy | No |
| Intel Device 8a02 | icl_uncore | No | No |
| Iris Plus Graphics G1 (Ice Lake) | i915 | i915 | No |https://gitlab.redox-os.org/redox-os/drivers/-/issues/38Invalid/ Missing register writes in ixgbe driver2023-09-25T18:26:58ZRamla-IInvalid/ Missing register writes in ixgbe driverThe following bugs are present in the ixgbe driver:
1. Write to reserved bits \[15:12\] of the DTXMXSZRQ register
2. Bits of RDRXCTL are not set by software. According to the datasheet:
1. RDRXCTL.RSCFRSTSIZE is by default 0x8 and s...The following bugs are present in the ixgbe driver:
1. Write to reserved bits \[15:12\] of the DTXMXSZRQ register
2. Bits of RDRXCTL are not set by software. According to the datasheet:
1. RDRXCTL.RSCFRSTSIZE is by default 0x8 and should be set to 0 by software.
2. RDRXCTL.RSCACKC is by default 0 and should be set to 1 by software.
3. RDRXCTL.FCOE_WRFIX is by default 0 and should be set to 1 by software.
3. The FCTRL register should only be modified/ updated when the RXCTRL.RXEN bit is set to 0, but the `set_promisc` function updates the filters after RXCTRL.RXEN is set.https://gitlab.redox-os.org/redox-os/drivers/-/issues/37vesad: Implement Debug for DisplayScheme2023-08-07T06:54:20ZRon Williamsvesad: Implement Debug for DisplaySchemeWhen debugging a problem with `vesad`, I hacked a version of `Debug` for `DisplayScheme` and found it extremely helpful. It would be good to implement this permanently. Be careful not to include the screen buffer.When debugging a problem with `vesad`, I hacked a version of `Debug` for `DisplayScheme` and found it extremely helpful. It would be good to implement this permanently. Be careful not to include the screen buffer.https://gitlab.redox-os.org/redox-os/drivers/-/issues/36vesad: Error in width/height calculation when switching from TextScreen to Gr...2023-08-07T07:08:55ZRon Williamsvesad: Error in width/height calculation when switching from TextScreen to GraphicsScreenIn `vesad/src/scheme.rs`, `SchemeMut for DisplayScheme`, `fn write`, if the command is `Activate` and the mode is `Graphic`, a new `GraphicScreen` is created. However, the `width()` and `height()` are taken from the previous Screen type,...In `vesad/src/scheme.rs`, `SchemeMut for DisplayScheme`, `fn write`, if the command is `Activate` and the mode is `Graphic`, a new `GraphicScreen` is created. However, the `width()` and `height()` are taken from the previous Screen type, which are calculated in pixels for `GraphicsScreen` and in characters for `TextScreen`. So if the previous screen type was `TextScreen`, the width and height are now a fraction of the correct values.
Note that the original `TextScreen` is created with `width` and `height` fields calculated in pixels. It's not clear to me if those fields should always be in pixels and the `width()` and `height()` functions should convert to character sizes. Either way, it is not consistent and should be corrected and documented.
Since the `Screen` struct is `Box<dyn Screen>`, the information is lost about whether the `Screen` is a `TextScreen` or a `GraphicsScreen`, so either the calculations need to be in pixels always, or there needs to be an addition to the `Screen` trait to provide `width_in_pixels()` and `height_in_pixels()`.https://gitlab.redox-os.org/redox-os/drivers/-/issues/35Reduce code duplication2023-07-18T09:04:46ZJacob Lorentzon4ldo2@protonmail.comReduce code duplicationLots of drivers unnecessarily contain lots of duplicate code, particularly boilerplate code for scheme handling and other process management, and also the MSI/MSI-X code. Additionally, many drivers provide their own wrappers for physmap/...Lots of drivers unnecessarily contain lots of duplicate code, particularly boilerplate code for scheme handling and other process management, and also the MSI/MSI-X code. Additionally, many drivers provide their own wrappers for physmap/physunmap.https://gitlab.redox-os.org/redox-os/drivers/-/issues/34Tracking issue for acpid features2023-04-27T05:18:44ZRon WilliamsTracking issue for acpid features`acpid` needs the following features (among other things). Each item is relatively separate. A star at the end means you will need to understand the domain well. + or ++ indicates more effort.
- [ ] fix bug in `acpid` when using Rusty Ob...`acpid` needs the following features (among other things). Each item is relatively separate. A star at the end means you will need to understand the domain well. + or ++ indicates more effort.
- [ ] fix bug in `acpid` when using Rusty Object Notation for serialization - See #33 (ACPI knowledge not needed)
- [ ] change the `acpi` crate from `github.com/rust-osdev/acpi` so the table types are not parameterized `<H>`, but the `new` function is, and add a `from_table` new function that takes a virtual memory byte stream and creates a new table *++ https://github.com/rust-osdev/acpi/issues/172
- [ ] publish various acpi tables as serialized data, and provide a serialized interface definition *++
- [ ] implement some acpi related functionality such as battery management, as a way of clarifying requirements for acpi *+
- [ ] implement new acpi table types such as DMAR (we have a partial implementation of DMAR) *++https://gitlab.redox-os.org/redox-os/drivers/-/issues/33acpid: Change serialization of symbols to use Rusty Object Notation2023-06-11T09:22:45ZRon Williamsacpid: Change serialization of symbols to use Rusty Object NotationIn `acpid`, near https://gitlab.redox-os.org/redox-os/drivers/-/blob/master/acpid/src/acpi.rs#L342
```
if let Ok(ser_string) = serde_json::to_string_pretty(&ser_value) {
```
We would like to use Rusty Object Notation, but it crashes duri...In `acpid`, near https://gitlab.redox-os.org/redox-os/drivers/-/blob/master/acpid/src/acpi.rs#L342
```
if let Ok(ser_string) = serde_json::to_string_pretty(&ser_value) {
```
We would like to use Rusty Object Notation, but it crashes during initialization when it tries to fill with random data. It crashes accessing `/dev/rand`. This needs to be fixed and serialization converted to RON.https://gitlab.redox-os.org/redox-os/drivers/-/issues/32pcid process functions incorrectly2020-07-29T05:00:52ZWren Turkalpcid process functions incorrectlyIn PCI/PCIe, all single function devices are supposed to implement function 0 only, and multifunction devices must have function 0 while other functions an be non-sequential.
Pcid, on the other hand, always scans all eight functions.
I...In PCI/PCIe, all single function devices are supposed to implement function 0 only, and multifunction devices must have function 0 while other functions an be non-sequential.
Pcid, on the other hand, always scans all eight functions.
I think we should fix this to comply with the spec.https://gitlab.redox-os.org/redox-os/drivers/-/issues/30ps2d crash on Thinkpad T540p2020-06-11T05:58:26ZPhilip Petersonps2d crash on Thinkpad T540pHello, I am seeing a panic in `ps2d` when booting Redox on a laptop. This is just using the Thinkpad's built-in mouse and keyboard. Details copied out below:
Hardware: ThinkPad T540p
Output:
```
ps2d: flush disable: 0
thread 'main' pan...Hello, I am seeing a panic in `ps2d` when booting Redox on a laptop. This is just using the Thinkpad's built-in mouse and keyboard. Details copied out below:
Hardware: ThinkPad T540p
Output:
```
ps2d: flush disable: 0
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `0`
right: `85`', ps2d/src/controller.rs:226:9
```
Might be worth mentioning that sometimes I just get the first line with no trace. Thanks for taking a look.https://gitlab.redox-os.org/redox-os/drivers/-/issues/29Tracking issue for XHCI2020-05-04T15:19:04ZJacob Lorentzon4ldo2@protonmail.comTracking issue for XHCI# TODO
- [x] Support configure endpoint commands through `/portX/configure` (https://gitlab.redox-os.org/redox-os/drivers/merge_requests/57)
- [x] Support alternate interfaces. Right now though, there should be a way to get the currentl...# TODO
- [x] Support configure endpoint commands through `/portX/configure` (https://gitlab.redox-os.org/redox-os/drivers/merge_requests/57)
- [x] Support alternate interfaces. Right now though, there should be a way to get the currently selected configuration and interface, because `configure_endpoints` just discards those parameters when the xHC doesn't support multiple configurations.
- [x] Use correct parameters for all device types (this requires the knowing USB2 speed, as in low-speed, high-speed, and full-speed), particularly in the endpoint contexts.
- [x] Implement transfers, accessible through the API. The API is currently a bit limited though, as it for example only supports up to 64KiB transactions.
- [x] Implement streams. Streams aren't really implemented as of now, because only one stream is used all the time, which kind of eliminates the point of streams. However, since streams are required for superspeed devices, they are needed for proper xHC operation.
- [x] __Use IRQs correctly__
- [x] For optimal performance, MSI and/or MSI-X
- [x] Add an interface between `xhcid` and the class specific drivers.
- [ ] Support modifying descriptors properly, which would also require implementing the XHCI Evaluate Context command.
- [ ] Support stopping and resetting endpoints
- [ ] Support resetting deviceshttps://gitlab.redox-os.org/redox-os/drivers/-/issues/25vesad: Changing the tty shortcuts2019-03-16T21:13:59ZNagy Tiborxnagytibor@gmail.comvesad: Changing the tty shortcutshttps://gitlab.redox-os.org/redox-os/drivers/blob/3f41225d78eb2b403ecb2cd8bada1da92f8ec34f/vesad/src/scheme.rs#L229-240
The vesad daemon currently uses F1-F12 to switch between ttys and as a result it swallows every event of these keys....https://gitlab.redox-os.org/redox-os/drivers/blob/3f41225d78eb2b403ecb2cd8bada1da92f8ec34f/vesad/src/scheme.rs#L229-240
The vesad daemon currently uses F1-F12 to switch between ttys and as a result it swallows every event of these keys. This is a problem, there are multiple ports that would use the function keys (`scummvm`, `dosbox`, `schismtracker`, `vice`, etc.)
What about changing the shortcuts to Meta+F1 - Meta+F12?https://gitlab.redox-os.org/redox-os/drivers/-/issues/14vesad: Doesn't compile with the rusttype feature enabled2018-06-13T19:39:52ZJeremy Sollervesad: Doesn't compile with the rusttype feature enabled*Created by: xTibor*
Some of the recent layout changes broke the `rusttype` feature of `vesad`. The compiler complains about the inaccessible fonts at [vesad/src/display.rs](https://github.com/redox-os/drivers/blob/742bad2fd3b8ab51031f3...*Created by: xTibor*
Some of the recent layout changes broke the `rusttype` feature of `vesad`. The compiler complains about the inaccessible fonts at [vesad/src/display.rs](https://github.com/redox-os/drivers/blob/742bad2fd3b8ab51031f342c09aa6541486ec338/vesad/src/display.rs#L15-L22).
Setting them to valid paths solves the problem, however I'm not sure what's the most correct solution. Should the drivers package bundle its own TrueType fonts? Previously the feature used relative paths to access the fonts but with the new cookbook system I don't think that's the way to go.