mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 09:46:20 +00:00
dde_linux/usb: Add RNDIS driver
This commit is contained in:
parent
50ec5c03c1
commit
f15e8fec8f
@ -4,7 +4,7 @@ SRC_C += usb/core/hcd-pci.c
|
||||
#
|
||||
# USB netwpork support
|
||||
#
|
||||
SRC_C += $(addprefix net/usb/, usbnet.c ax88179_178a.c cdc_ether.c)
|
||||
SRC_C += $(addprefix net/usb/, usbnet.c ax88179_178a.c cdc_ether.c rndis_host.c)
|
||||
|
||||
# XHCI
|
||||
SRC_C += usb/host/xhci-pci.c
|
||||
|
30
repos/dde_linux/patches/usb_rndis.patch
Normal file
30
repos/dde_linux/patches/usb_rndis.patch
Normal file
@ -0,0 +1,30 @@
|
||||
diff -Nur a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
|
||||
--- a/drivers/net/usb/rndis_host.c
|
||||
+++ b/drivers/net/usb/rndis_host.c
|
||||
@@ -318,7 +318,7 @@
|
||||
unsigned char *bp;
|
||||
|
||||
/* we can't rely on i/o from stack working, or stack allocation */
|
||||
- u.buf = kmalloc(CONTROL_BUFFER_SIZE, GFP_KERNEL);
|
||||
+ u.buf = kzalloc(CONTROL_BUFFER_SIZE, GFP_KERNEL | GFP_LX_DMA);
|
||||
if (!u.buf)
|
||||
return -ENOMEM;
|
||||
retval = usbnet_generic_cdc_bind(dev, intf);
|
||||
@@ -475,7 +475,7 @@
|
||||
struct rndis_halt *halt;
|
||||
|
||||
/* try to clear any rndis state/activity (no i/o from stack!) */
|
||||
- halt = kzalloc(CONTROL_BUFFER_SIZE, GFP_KERNEL);
|
||||
+ halt = kzalloc(CONTROL_BUFFER_SIZE, GFP_KERNEL | GFP_LX_DMA);
|
||||
if (halt) {
|
||||
halt->msg_type = cpu_to_le32(RNDIS_MSG_HALT);
|
||||
halt->msg_len = cpu_to_le32(sizeof *halt);
|
||||
@@ -573,7 +573,7 @@
|
||||
* packets; Linux minimizes wasted bandwidth through tx queues.
|
||||
*/
|
||||
fill:
|
||||
- hdr = (void *) __skb_push(skb, sizeof *hdr);
|
||||
+ hdr = (void *) skb_push(skb, sizeof *hdr);
|
||||
memset(hdr, 0, sizeof *hdr);
|
||||
hdr->msg_type = cpu_to_le32(RNDIS_MSG_PACKET);
|
||||
hdr->msg_len = cpu_to_le32(skb->len);
|
@ -1 +1 @@
|
||||
570bd3cf50c3ae2307931ae9eb6bb706423167ef
|
||||
7f835ced1dfbfc678eaabf532d3650f822a6897e
|
||||
|
@ -190,6 +190,7 @@ PATCH_OPT(patches/usb_csum.patch) := $(USB_OPT)
|
||||
PATCH_OPT(patches/usb_evdev.patch) := $(USB_OPT)
|
||||
PATCH_OPT(patches/usb_mem.patch) := $(USB_OPT)
|
||||
PATCH_OPT(patches/usb_usbnet.patch) := $(USB_OPT)
|
||||
PATCH_OPT(patches/usb_rndis.patch) := $(USB_OPT)
|
||||
|
||||
# INTEL FB
|
||||
PATCH_OPT(patches/intel_fb_export_api.patch) := -p1 -d$(SRC_DIR_INTEL_FB)
|
||||
|
130
repos/dde_linux/run/usb_rndis.run
Normal file
130
repos/dde_linux/run/usb_rndis.run
Normal file
@ -0,0 +1,130 @@
|
||||
#
|
||||
# \brief Test for using the TCP/IP terminal over USB (RNDIS, CDC_ETHER or USB NIC)
|
||||
# \author Alexander Senier
|
||||
# \date 2017-10-19
|
||||
#
|
||||
|
||||
#
|
||||
# Build
|
||||
#
|
||||
|
||||
set build_components {
|
||||
core init
|
||||
drivers/timer drivers/usb
|
||||
server/tcp_terminal
|
||||
test/terminal_echo
|
||||
}
|
||||
|
||||
proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv }
|
||||
if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv }
|
||||
return gpio_drv }
|
||||
|
||||
source ${genode_dir}/repos/base/run/platform_drv.inc
|
||||
append_platform_drv_build_components
|
||||
|
||||
lappend_if [have_spec gpio] build_components drivers/gpio
|
||||
|
||||
build $build_components
|
||||
|
||||
create_boot_directory
|
||||
|
||||
#
|
||||
# Generate config
|
||||
#
|
||||
|
||||
set config {
|
||||
<config verbose="yes">
|
||||
<parent-provides>
|
||||
<service name="ROM"/>
|
||||
<service name="IRQ"/>
|
||||
<service name="IO_MEM"/>
|
||||
<service name="IO_PORT"/>
|
||||
<service name="PD"/>
|
||||
<service name="RM"/>
|
||||
<service name="CPU"/>
|
||||
<service name="LOG"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
<start name="timer">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides> <service name="Timer"/> </provides>
|
||||
</start>
|
||||
<start name="usb_drv">
|
||||
<resource name="RAM" quantum="24M"/>
|
||||
<provides>
|
||||
<service name="Nic"/>
|
||||
</provides>
|
||||
<config uhci="no" ohci="no" ehci="yes" xhci="yes">
|
||||
<nic mac="02:00:00:00:01:01" />
|
||||
</config>
|
||||
</start>
|
||||
<start name="tcp_terminal" caps="200">
|
||||
<resource name="RAM" quantum="2560K"/>
|
||||
<provides> <service name="Terminal"/> </provides>
|
||||
<config>
|
||||
<policy label_prefix="test-terminal_echo" port="8888"/>
|
||||
<vfs> <dir name="dev"> <log/> </dir> </vfs>
|
||||
<libc stdout="/dev/log"/>
|
||||
</config>
|
||||
<route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</route>
|
||||
</start>
|
||||
<start name="test-terminal_echo">
|
||||
<resource name="RAM" quantum="2M"/>
|
||||
</start>
|
||||
}
|
||||
|
||||
append_platform_drv_config
|
||||
|
||||
append_if [have_spec gpio] config "
|
||||
<start name=\"[gpio_drv]\">
|
||||
<resource name=\"RAM\" quantum=\"4M\"/>
|
||||
<provides><service name=\"Gpio\"/></provides>
|
||||
<config/>
|
||||
</start>"
|
||||
|
||||
append config {
|
||||
</config>
|
||||
}
|
||||
|
||||
install_config $config
|
||||
|
||||
#
|
||||
# Boot modules
|
||||
#
|
||||
|
||||
# generic modules
|
||||
set boot_modules {
|
||||
core ld.lib.so init timer usb_drv
|
||||
libc.lib.so libc_pipe.lib.so lwip.lib.so pthread.lib.so
|
||||
tcp_terminal
|
||||
test-terminal_echo
|
||||
}
|
||||
|
||||
append_platform_drv_boot_modules
|
||||
lappend_if [have_spec gpio] boot_modules [gpio_drv]
|
||||
|
||||
build_boot_image $boot_modules
|
||||
|
||||
append qemu_args " -device usb-ehci,id=ehci"
|
||||
|
||||
# Samsung RNDIS (tested with S5, Galaxy Tab S
|
||||
append qemu_args " -device usb-host,bus=ehci.0,vendorid=0x04e8,productid=0x6860"
|
||||
append qemu_args " -device usb-host,bus=ehci.0,vendorid=0x04e8,productid=0x6863"
|
||||
append qemu_args " -device usb-host,bus=ehci.0,vendorid=0x04e8,productid=0x6864"
|
||||
|
||||
# ASIX Electronics Corp. AX88179 Gigabit Ethernet
|
||||
append qemu_args " -device usb-host,bus=ehci.0,vendorid=0x0b95,productid=0x1790"
|
||||
|
||||
# Motorola Moto E
|
||||
append qemu_args " -device usb-host,id=motoe,bus=ehci.0,vendorid=0x22b8,productid=0x2e25"
|
||||
|
||||
append qemu_args " -nographic"
|
||||
|
||||
run_genode_until forever
|
||||
|
||||
# vi: set ft=tcl :
|
@ -102,6 +102,8 @@ enum {
|
||||
ETIME = 209,
|
||||
EPROBE_DEFER = 210,
|
||||
|
||||
EL3RST = 211,
|
||||
|
||||
MAX_ERRNO = 4095,
|
||||
};
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
extern "C" void module_ax88179_178a_driver_init();
|
||||
extern "C" void module_cdc_driver_init();
|
||||
extern "C" void module_rndis_driver_init();
|
||||
extern "C" void module_usbnet_init();
|
||||
extern "C" void module_ehci_hcd_init();
|
||||
extern "C" void module_ehci_pci_init();
|
||||
@ -31,6 +32,7 @@ void platform_hcd_init(Services *s)
|
||||
module_usbnet_init();
|
||||
module_ax88179_178a_driver_init();
|
||||
module_cdc_driver_init();
|
||||
module_rndis_driver_init();
|
||||
}
|
||||
|
||||
if (s->xhci) {
|
||||
|
@ -22,6 +22,7 @@ linux-x.x.x/drivers/net/usb/asix.h
|
||||
linux-x.x.x/drivers/net/usb/ax88172a.c
|
||||
linux-x.x.x/drivers/net/usb/ax88179_178a.c
|
||||
linux-x.x.x/drivers/net/usb/cdc_ether.c
|
||||
linux-x.x.x/drivers/net/usb/rndis_host.c
|
||||
linux-x.x.x/drivers/net/usb/smsc95xx.h
|
||||
linux-x.x.x/drivers/net/usb/smsc95xx.c
|
||||
linux-x.x.x/drivers/net/usb/usbnet.c
|
||||
@ -144,6 +145,7 @@ linux-x.x.x/include/linux/netdev_features.h
|
||||
linux-x.x.x/include/linux/pci_ids.h
|
||||
linux-x.x.x/include/linux/platform_data/usb-omap.h
|
||||
linux-x.x.x/include/linux/power_supply.h
|
||||
linux-x.x.x/include/linux/rndis.h
|
||||
linux-x.x.x/include/linux/swab.h
|
||||
linux-x.x.x/include/linux/usb.h
|
||||
linux-x.x.x/include/linux/usb_usual.h
|
||||
@ -153,6 +155,7 @@ linux-x.x.x/include/linux/usb/ehci-dbgp.h
|
||||
linux-x.x.x/include/linux/usb/ehci_def.h
|
||||
linux-x.x.x/include/linux/usb/hcd.h
|
||||
linux-x.x.x/include/linux/usb/input.h
|
||||
linux-x.x.x/include/linux/usb/rndis_host.h
|
||||
linux-x.x.x/include/linux/io-64-nonatomic-lo-hi.h
|
||||
linux-x.x.x/include/linux/usb/otg.h
|
||||
linux-x.x.x/include/linux/usb/phy.h
|
||||
|
Loading…
x
Reference in New Issue
Block a user