Nano板子开机没有识别出硬件声卡,这个问题该如何下手解决?
[ 3.626561] ALSA device list:
[ 3.629602] #0: Loopback 1
# ls -lh /sys/firmware/devicetree/base/
total 0
-r--r--r-- 1 root root 4 Jan 1 00:00 #address-cells
-r--r--r-- 1 root root 4 Jan 1 00:00 #size-cells
drwxr-xr-x 2 root root 0 Jan 1 00:00 aliases
drwxr-xr-x 2 root root 0 Jan 1 00:00 chosen
drwxr-xr-x 5 root root 0 Jan 1 00:00 clocks
-r--r--r-- 1 root root 63 Jan 1 00:00 compatible
drwxr-xr-x 3 root root 0 Jan 1 00:00 cpus
drwxr-xr-x 2 root root 0 Jan 1 00:00 display-engine
-r--r--r-- 1 root root 4 Jan 1 00:00 interrupt-parent
drwxr-xr-x 2 root root 0 Jan 1 00:00 memory
-r--r--r-- 1 root root 15 Jan 1 00:00 model
-r--r--r-- 1 root root 1 Jan 1 00:00 name
drwxr-xr-x 3 root root 0 Jan 1 00:00 panel
drwxr-xr-x 24 root root 0 Jan 1 00:00 soc
drwxr-xr-x 2 root root 0 Jan 1 00:00 vcc3v3
#
# ls /dev/snd -l
total 0
crw-rw---- 1 root audio 116, 0 Jan 1 00:00 controlC0
crw-rw---- 1 root audio 116, 24 Jan 1 00:00 pcmC0D0c
crw-rw---- 1 root audio 116, 16 Jan 1 00:00 pcmC0D0p
crw-rw---- 1 root audio 116, 25 Jan 1 00:00 pcmC0D1c
crw-rw---- 1 root audio 116, 17 Jan 1 00:00 pcmC0D1p
crw-rw---- 1 root audio 116, 33 Jan 1 00:00 timer
#
# cat /proc/asound/cards
0 [Loopback ]: Loopback - Loopback
Loopback 1
#
# cat /proc/asound/devices
0: [ 0] : control
16: [ 0- 0]: digital audio playback
17: [ 0- 1]: digital audio playback
24: [ 0- 0]: digital audio capture
25: [ 0- 1]: digital audio capture
33: : timer
#
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
#
开机日志:
==========================================================================
# dmesg
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.15.0-licheepi-nano+ (root@ubuntu) (gcc version 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] (Linaro GCC 7.4-2019.02)) #42 Sat Aug 24 10:33:10 EDT 2019
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: Lichee Pi Nano
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] On node 0 totalpages: 8192
[ 0.000000] Normal zone: 64 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 8192 pages, LIFO batch:0
[ 0.000000] random: fast init done
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: console=ttyS0,115200 panic=5 rootwait root=/dev/mtdblock3 rw rootfstype=jffs2 vt.global_cursor_default=0
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Memory: 22672K/32768K available (6144K kernel code, 236K rwdata, 1412K rodata, 1024K init, 245K bss, 10096K reserved, 0K cma-reserved, 0K highmem)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc : 0xc2800000 - 0xff800000 ( 976 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc2000000 ( 32 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .text : 0x(ptrval) - 0x(ptrval) (7136 kB)
[ 0.000000] .init : 0x(ptrval) - 0x(ptrval) (1024 kB)
[ 0.000000] .data : 0x(ptrval) - 0x(ptrval) ( 237 kB)
[ 0.000000] .bss : 0x(ptrval) - 0x(ptrval) ( 246 kB)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000047] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000109] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000636] Console: colour dummy device 80x30
[ 0.000734] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070236] pid_max: default: 32768 minimum: 301
[ 0.070566] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070620] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.072227] CPU: Testing write buffer coherency: ok
[ 0.073955] Setting up static identity map for 0x80100000 - 0x80100058
[ 0.076584] devtmpfs: initialized
[ 0.084820] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.084896] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.085175] pinctrl core: initialized pinctrl subsystem
[ 0.087484] NET: Registered protocol family 16
[ 0.088935] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.091036] cpuidle: using governor menu
[ 0.120649] SCSI subsystem initialized
[ 0.121052] usbcore: registered new interface driver usbfs
[ 0.121213] usbcore: registered new interface driver hub
[ 0.121457] usbcore: registered new device driver usb
[ 0.121985] pps_core: LinuxPPS API ver. 1 registered
[ 0.122015] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.122093] PTP clock support registered
[ 0.122693] Advanced Linux Sound Architecture Driver Initialized.
[ 0.124967] clocksource: Switched to clocksource timer
[ 0.153741] NET: Registered protocol family 2
[ 0.155448] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.155541] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.155606] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.155968] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.156047] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.156591] NET: Registered protocol family 1
[ 0.157910] RPC: Registered named UNIX socket transport module.
[ 0.157956] RPC: Registered udp transport module.
[ 0.157974] RPC: Registered tcp transport module.
[ 0.157990] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.160374] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.162305] Initialise system trusted keyrings
[ 0.162842] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[ 0.181402] NFS: Registering the id_resolver key type
[ 0.181505] Key type id_resolver registered
[ 0.181526] Key type id_legacy registered
[ 0.181657] jffs2: version 2.2. (NAND) ? 2001-2006 Red Hat, Inc.
[ 0.197288] Key type asymmetric registered
[ 0.197333] Asymmetric key parser 'x509' registered
[ 0.197560] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 0.197596] io scheduler noop registered
[ 0.197617] io scheduler deadline registered
[ 0.198467] io scheduler cfq registered (default)
[ 0.198505] io scheduler mq-deadline registered
[ 0.198526] io scheduler kyber registered
[ 0.199909] sun4i-usb-phy 1c13400.phy: Couldn't request ID GPIO
[ 0.210220] suniv-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.395428] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.402690] console [ttyS0] disabled
[ 0.422975] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 27, base_baud = 6250000) is a 16550A
[ 0.905055] console [ttyS0] enabled
[ 0.931427] 1c25800.serial: ttyS2 at MMIO 0x1c25800 (irq = 28, base_baud = 6250000) is a 16550A
[ 0.948607] panel-simple panel: panel supply power not found, using dummy regulator
[ 0.958138] SCSI Media Changer driver v0.25
[ 0.966575] m25p80 spi0.0: w25q128 (16384 Kbytes)
[ 0.972330] 4 ofpart partitions found on MTD device spi0.0
[ 0.977959] Creating 4 MTD partitions on "spi0.0":
[ 0.982777] 0x000000000000-0x000000100000 : "u-boot"
[ 0.990467] 0x000000100000-0x000000110000 : "dtb"
[ 0.997997] 0x000000110000-0x000000510000 : "kernel"
[ 1.005613] 0x000000510000-0x000001000000 : "rootfs"
[ 1.013867] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.020544] ehci-platform: EHCI generic platform driver
[ 1.026193] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.032428] ohci-platform: OHCI generic platform driver
[ 1.038194] usbcore: registered new interface driver usb-storage
[ 1.046467] input: 1c23400.lradc as /devices/platform/soc/1c23400.lradc/input/input0
[ 1.056980] input: 1c24800.rtp as /devices/platform/soc/1c24800.rtp/input/input1
[ 1.065461] i2c /dev entries driver
[ 3.125051] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0
[ 3.131614] rtc-pcf8563 0-0051: pcf8563_write_block_data: err=-110 addr=0e, data=03
[ 3.139325] rtc-pcf8563 0-0051: pcf8563_probe: write error
[ 3.144934] rtc-pcf8563: probe of 0-0051 failed with error -5
[ 3.153188] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 3.215112] sunxi-mmc 1c0f000.mmc: base:0xcffafbc9 irq:20
[ 3.222947] usbcore: registered new interface driver usbhid
[ 3.228666] usbhid: USB HID core driver
[ 3.251896] NET: Registered protocol family 17
[ 3.256750] Key type dns_resolver registered
[ 3.263278] Loading compiled-in X.509 certificates
[ 3.280221] sun4i-drm display-engine: bound 1e60000.display-backend (ops 0xc0739cb8)
[ 3.289139] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc0738f9c)
[ 3.296925] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 3.303536] [drm] No driver support for vblank timestamp query.
[ 3.502927] Console: switching to colour frame buffer device 100x30
[ 3.541741] sun4i-drm display-engine: fb0: frame buffer device
[ 3.548986] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
[ 3.558294] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator
[ 3.570331] musb-hdrc musb-hdrc.1.auto: MUSB HDRC host driver
[ 3.576273] musb-hdrc musb-hdrc.1.auto: new USB bus registered, assigned bus number 1
[ 3.586688] hub 1-0:1.0: USB hub found
[ 3.590637] hub 1-0:1.0: 1 port detected
[ 3.596699] hctosys: unable to open rtc device (rtc0)
[ 3.602256] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 3.619720] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 3.626561] ALSA device list:
[ 3.629602] #0: Loopback 1
[ 3.633417] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 3.642148] cfg80211: failed to load regulatory.db
[ 3.736825] random: crng init done
[ 5.307121] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[ 5.316115] devtmpfs: mounted
[ 5.326284] Freeing unused kernel memory: 1024K
[ 14.927256] file system registered
[ 15.229620] uart closed, irq=27 .....................
[ 16.252087] read descriptors
[ 16.255210] read strings
[ 16.258031] g_ffs gadget: g_ffs ready
#
#
离线
司徒的miyoo kernel 可以播放声音: https://github.com/qq516333132/f1c500s_kernel
前面 @傅伟清 已经放弃治疗了, 改用 tina3.x
1. 这个问题是出在哪里了?内核么?
2. @傅伟清 已经放弃了,用tinyalsa可以了么,意思是alsa在这个nano上不行,还是哪里不对?
离线
1. 不知道,你对你一下代码吧, 只要花点时间应该可以搞定
2. 应该是驱动没怼好
我发现他的设备树里有codec相关的,suniv-f1c500s-miyoo.dts
&codec {
status = "okay";
};
而我当前板子里的dtb里面没有codec相关,可能是这个原因么?
离线
可能在包涵的 dtsi 文件里面
我把dtb转为dts,dtsi会全部展开,里面并没有codec,
suniv-f1c100s-licheepi-nano-800480.dtb ---> suniv-f1c100s-licheepi-nano-800480.dts
<code>
/dts-v1/;
/ {
#address-cells = <0x1>;
#size-cells = <0x1>;
interrupt-parent = <0x1>;
model = "Lichee Pi Nano";
compatible = "licheepi,licheepi-nano", "allwinner,suniv-f1c100s", "allwinner,suniv";
clocks {
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges;
clk-24M {
#clock-cells = <0x0>;
compatible = "fixed-clock";
clock-frequency = <0x16e3600>;
clock-output-names = "osc24M";
phandle = <0x6>;
};
clk-32k {
#clock-cells = <0x0>;
compatible = "fixed-clock";
clock-frequency = <0x8000>;
clock-output-names = "osc32k";
phandle = <0xb>;
};
clk-100M {
#clock-cells = <0x0>;
compatible = "fixed-clock";
clock-frequency = <0x5f5e100>;
clock-output-names = "fake-100M";
};
};
cpus {
#address-cells = <0x0>;
#size-cells = <0x0>;
cpu {
compatible = "arm,arm926ej-s";
device_type = "cpu";
};
};
display-engine {
compatible = "allwinner,suniv-display-engine";
allwinner,pipelines = <0x2>;
status = "okay";
};
soc {
compatible = "simple-bus";
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges;
sram-controller@1c00000 {
compatible = "allwinner,sun4i-a10-sram-controller";
reg = <0x1c00000 0x30>;
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges;
sram@10000 {
compatible = "mmio-sram";
reg = <0x10000 0x1000>;
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges = <0x0 0x10000 0x1000>;
sram-section@0 {
compatible = "allwinner,sun4i-a10-sram-d";
reg = <0x0 0x1000>;
status = "okay";
phandle = <0x13>;
};
};
};
lradc@1c23400 {
compatible = "allwinner,sun4i-a10-lradc-keys";
reg = <0x1c23400 0x400>;
interrupts = <0x16>;
status = "okay";
vref-supply = <0x3>;
button@200 {
label = "Volume Up";
linux,code = <0x73>;
channel = <0x0>;
voltage = <0x30d40>;
};
button@400 {
label = "Volume Down";
linux,code = <0x72>;
channel = <0x0>;
voltage = <0x61a80>;
};
button@600 {
label = "Select";
linux,code = <0x161>;
channel = <0x0>;
voltage = <0x927c0>;
};
button@800 {
label = "Start";
linux,code = <0x160>;
channel = <0x0>;
voltage = <0xc3500>;
};
};
spi@1c05000 {
compatible = "allwinner,suniv-spi", "allwinner,sun8i-h3-spi";
reg = <0x1c05000 0x1000>;
interrupts = <0xa>;
clocks = <0x4 0x11 0x4 0x11>;
clock-names = "ahb", "mod";
resets = <0x4 0x4>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
pinctrl-names = "default";
pinctrl-0 = <0x5>;
flash@0 {
#address-cells = <0x1>;
#size-cells = <0x1>;
compatible = "winbond,w25q128", "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <0x2625a00>;
partitions {
compatible = "fixed-partitions";
#address-cells = <0x1>;
#size-cells = <0x1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x100000>;
read-only;
};
partition@100000 {
label = "dtb";
reg = <0x100000 0x10000>;
read-only;
};
partition@110000 {
label = "kernel";
reg = <0x110000 0x400000>;
read-only;
};
partition@510000 {
label = "rootfs";
reg = <0x510000 0xaf0000>;
};
};
};
};
spi@1c06000 {
compatible = "allwinner,suniv-spi", "allwinner,sun8i-h3-spi";
reg = <0x1c06000 0x1000>;
interrupts = <0xb>;
clocks = <0x4 0x12 0x4 0x12>;
clock-names = "ahb", "mod";
resets = <0x4 0x5>;
status = "disabled";
#address-cells = <0x1>;
#size-cells = <0x0>;
};
lcd-controller@1c0c000 {
compatible = "allwinner,suniv-tcon";
reg = <0x1c0c000 0x1000>;
interrupts = <0x1d>;
clocks = <0x4 0x15 0x4 0x39 0x6>;
clock-names = "ahb", "tcon-ch0", "tcon-ch1";
clock-output-names = "tcon-pixel-clock";
resets = <0x4 0x8>;
reset-names = "lcd";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x7>;
ports {
#address-cells = <0x1>;
#size-cells = <0x0>;
port@0 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x0>;
endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x8>;
phandle = <0x16>;
};
};
port@1 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x1>;
endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x9>;
phandle = <0x17>;
};
};
};
};
mmc@1c0f000 {
compatible = "allwinner,suniv-mmc", "allwinner,sun7i-a20-mmc";
reg = <0x1c0f000 0x1000>;
clocks = <0x4 0xe 0x4 0x28 0x4 0x2a 0x4 0x29>;
clock-names = "ahb", "mmc", "output", "sample";
resets = <0x4 0x1>;
reset-names = "ahb";
interrupts = <0x17>;
pinctrl-names = "default";
pinctrl-0 = <0xa>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
vmmc-supply = <0x3>;
bus-width = <0x4>;
broken-cd;
};
mmc@1c10000 {
compatible = "allwinner,suniv-mmc", "allwinner,sun7i-a20-mmc";
reg = <0x1c10000 0x1000>;
clocks = <0x4 0xf 0x4 0x2b 0x4 0x2d 0x4 0x2c>;
clock-names = "ahb", "mmc", "output", "sample";
resets = <0x4 0x2>;
reset-names = "ahb";
interrupts = <0x18>;
status = "disabled";
#address-cells = <0x1>;
#size-cells = <0x0>;
};
clock@1c20000 {
compatible = "allwinner,suniv-ccu";
reg = <0x1c20000 0x400>;
clocks = <0x6 0xb>;
clock-names = "hosc", "losc";
#clock-cells = <0x1>;
#reset-cells = <0x1>;
phandle = <0x4>;
};
interrupt-controller@1c20400 {
compatible = "allwinner,suniv-ic";
reg = <0x1c20400 0x400>;
interrupt-controller;
#interrupt-cells = <0x1>;
phandle = <0x1>;
};
pinctrl@1c20800 {
compatible = "allwinner,suniv-pinctrl";
reg = <0x1c20800 0x400>;
interrupts = <0x26 0x27 0x28>;
clocks = <0x4 0x24 0x6 0xb>;
clock-names = "apb", "hosc", "losc";
gpio-controller;
interrupt-controller;
#interrupt-cells = <0x3>;
#gpio-cells = <0x3>;
phandle = <0xd>;
spi0-pins-pc {
pins = "PC0", "PC1", "PC2", "PC3";
function = "spi0";
phandle = <0x5>;
};
lcd-rgb666-pins {
pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21";
function = "lcd";
phandle = <0x7>;
};
rtp-pins {
pins = "PA0", "PA1", "PA2", "PA3";
function = "rtp";
phandle = <0xe>;
};
uart-pins-pe {
pins = "PE0", "PE1";
function = "uart0";
phandle = <0x10>;
};
uart-pins-pe78 {
pins = "PE7", "PE8";
function = "uart2";
phandle = <0x11>;
};
i2c0 {
pins = "PE11", "PE12";
function = "i2c0";
phandle = <0xc>;
};
mmc0-pins {
pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
function = "mmc0";
phandle = <0xa>;
};
pwm0 {
pins = "PE12";
function = "pwm0";
};
pwm1 {
pins = "PE6";
function = "pwm1";
phandle = <0xf>;
};
};
i2c@1C27000 {
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x1c27000 0x400>;
interrupts = <0x7>;
clocks = <0x4 0x21>;
resets = <0x4 0x14>;
pinctrl-names = "default";
pinctrl-0 = <0xc>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
touchscreen@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
interrupt-parent = <0xd>;
interrupts = <0x4 0x3 0x2>;
pinctrl-names = "default";
irq-gpios = <0xd 0x4 0x3 0x0>;
reset-gpios = <0xd 0x4 0x9 0x0>;
touchscreen-swapped-x-y;
};
touchscreen@14 {
compatible = "goodix,gt911";
reg = <0x14>;
interrupt-parent = <0xd>;
interrupts = <0x4 0x3 0x2>;
pinctrl-names = "default";
irq-gpios = <0xd 0x4 0x3 0x0>;
reset-gpios = <0xd 0x4 0x9 0x0>;
touchscreen-swapped-x-y;
};
};
rtp@1c24800 {
compatible = "allwinner,sun4i-a10-ts";
reg = <0x1c24800 0x100>;
interrupts = <0x14>;
allwinner,ts-attached;
#thermal-sensor-cells = <0x0>;
pinctrl-names = "default";
pinctrl-0 = <0xe>;
status = "okay";
};
pwm@1c21000 {
compatible = "allwinner,sun7i-a20-pwm";
reg = <0x1c21000 0xc>;
clocks = <0x6>;
#pwm-cells = <0x3>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0xf>;
};
timer@1c20c00 {
compatible = "allwinner,suniv-timer";
reg = <0x1c20c00 0x90>;
interrupts = <0xd>;
clocks = <0x6>;
};
watchdog@1c20ca0 {
compatible = "allwinner,sun6i-a31-wdt";
reg = <0x1c20ca0 0x20>;
interrupts = <0x10>;
status = "okay";
};
serial@1c25000 {
compatible = "snps,dw-apb-uart";
reg = <0x1c25000 0x400>;
interrupts = <0x1>;
reg-shift = <0x2>;
reg-io-width = <0x4>;
clocks = <0x4 0x25>;
resets = <0x4 0x17>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x10>;
rts-gpio = <0xd 0x4 0x9 0x0>;
rs485-rts-active-high;
rs485-rts-delay = <0x0 0x0>;
linux,rs485-enabled-at-boot-time;
};
serial@1c25400 {
compatible = "snps,dw-apb-uart";
reg = <0x1c25400 0x400>;
interrupts = <0x2>;
reg-shift = <0x2>;
reg-io-width = <0x4>;
clocks = <0x4 0x26>;
resets = <0x4 0x18>;
status = "disabled";
};
serial@1c25800 {
compatible = "snps,dw-apb-uart";
reg = <0x1c25800 0x400>;
interrupts = <0x3>;
reg-shift = <0x2>;
reg-io-width = <0x4>;
clocks = <0x4 0x27>;
resets = <0x4 0x19>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x11>;
rts-gpio = <0xd 0x4 0xa 0x0>;
rs485-rts-active-high;
rs485-rts-delay = <0x0 0x0>;
linux,rs485-enabled-at-boot-time;
};
usb@1c13000 {
compatible = "allwinner,suniv-musb";
reg = <0x1c13000 0x400>;
clocks = <0x4 0x13>;
resets = <0x4 0x6>;
interrupts = <0x1a>;
interrupt-names = "mc";
phys = <0x12 0x0>;
phy-names = "usb";
extcon = <0x12 0x0>;
allwinner,sram = <0x13 0x1>;
status = "okay";
dr_mode = "otg";
};
phy@1c13400 {
compatible = "allwinner,suniv-usb-phy";
reg = <0x1c13400 0x10>;
reg-names = "phy_ctrl";
clocks = <0x4 0x30>;
clock-names = "usb0_phy";
resets = <0x4 0x0>;
reset-names = "usb0_reset";
#phy-cells = <0x1>;
status = "okay";
usb0_id_det-gpio = <0xd 0x4 0x2 0x0>;
phandle = <0x12>;
};
display-frontend@1e00000 {
compatible = "allwinner,suniv-display-frontend";
reg = <0x1e00000 0x20000>;
interrupts = <0x1e>;
clocks = <0x4 0x1b 0x4 0x38 0x4 0x35>;
clock-names = "ahb", "mod", "ram";
resets = <0x4 0xe>;
status = "disabled";
phandle = <0x2>;
ports {
#address-cells = <0x1>;
#size-cells = <0x0>;
port@1 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x1>;
endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x14>;
phandle = <0x15>;
};
};
};
};
display-backend@1e60000 {
compatible = "allwinner,suniv-display-backend";
reg = <0x1e60000 0x10000>;
reg-names = "be";
interrupts = <0x1f>;
clocks = <0x4 0x1a 0x4 0x37 0x4 0x36>;
clock-names = "ahb", "mod", "ram";
resets = <0x4 0xd>;
reset-names = "be";
assigned-clocks = <0x4 0x37>;
assigned-clock-rates = <0x11e1a300>;
ports {
#address-cells = <0x1>;
#size-cells = <0x0>;
port@0 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x0>;
endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x15>;
phandle = <0x14>;
};
};
port@1 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x1>;
endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x16>;
phandle = <0x8>;
};
};
};
};
};
aliases {
serial0 = "/soc/serial@1c25000";
serial2 = "/soc/serial@1c25800";
spi0 = "/soc/spi@1c05000";
};
chosen {
stdout-path = "serial0:115200n8";
};
panel {
compatible = "okaya,rs800480t-7x0gp", "simple-panel";
#address-cells = <0x1>;
#size-cells = <0x0>;
port@0 {
reg = <0x0>;
#address-cells = <0x1>;
#size-cells = <0x0>;
endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x17>;
phandle = <0x9>;
};
};
};
vcc3v3 {
compatible = "regulator-fixed";
regulator-name = "vcc3v3";
regulator-min-microvolt = <0x325aa0>;
regulator-max-microvolt = <0x325aa0>;
phandle = <0x3>;
};
};
</code>
离线
可能在包涵的 dtsi 文件里面
在\f1c500s_kernel\sound\soc\里面发现suniv文件夹,好像是他自己增加的,官方的名字是sunxi,
\f1c500s_kernel\sound\soc\suniv\下面,他自己写了几个文件:
miyoo.c
Makefile
Kconfig
好像这才是F1c100s的codec驱动,目前不懂,推测的。
离线
晕哥 说:可能在包涵的 dtsi 文件里面
在\f1c500s_kernel\sound\soc\里面发现suniv文件夹,好像是他自己增加的,官方的名字是sunxi,
\f1c500s_kernel\sound\soc\suniv\下面,他自己写了几个文件:
miyoo.c
Makefile
Kconfig好像这才是F1c100s的codec驱动,目前不懂,推测的。
对就是这个,不过得研究一下源码,我编译成ko后,安装老是出错
离线
nano的sdk里和bsp比较是少音频驱动的,那个loopback无用,要不就移植,要不就只能换方案了,这是我之前比较的情况
离线
这是tina的声卡开机日志,司徒的手撸的,没深入研究过,而且没法直接上100s的
离线
https://whycan.cn/files/members/1833/QQ图片20191025190053.png
这是tina的声卡开机日志,司徒的手撸的,没深入研究过,而且没法直接上100s的
0. 我看的miyoo.c作者是不是司徒大佬?
1. 你不是弄好了么?
2. 没法直接上100s,意思是这个驱动是f1c500的,需要修改驱动源码才能在f1c100上用是么?
3. tina声卡,是指tinyalsa吧, 不明白tinyalsa和alsa的区别,是不是如果底层硬件驱动好了话,这两都可以用没有啥区别?
刚未入门的小白,一下问得有点多,先谢谢大佬们的耐心解答!
离线
\f1c500s_kernel\sound\soc\suniv\下面,他自己写了几个文件:
好像这才是F1c100s的codec驱动,目前不懂,推测的。
对就是这个,不过得研究一下源码,我编译成ko后,安装老是出错
感觉只是编译ko不行吧,我猜测的,
你也是用在f1c100上么?
是不是500s和100s的codec的寄存器不一样,miyoo.c代码需要修改呢?
离线
晕哥 说:可能在包涵的 dtsi 文件里面
我把dtb转为dts,dtsi会全部展开,里面并没有codec,
suniv-f1c100s-licheepi-nano-800480.dtb ---> suniv-f1c100s-licheepi-nano-800480.dts
<code>
/dts-v1/;/ {
#address-cells = <0x1>;
#size-cells = <0x1>;
interrupt-parent = <0x1>;
model = "Lichee Pi Nano";
compatible = "licheepi,licheepi-nano", "allwinner,suniv-f1c100s", "allwinner,suniv";clocks {
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges;clk-24M {
#clock-cells = <0x0>;
compatible = "fixed-clock";
clock-frequency = <0x16e3600>;
clock-output-names = "osc24M";
phandle = <0x6>;
};clk-32k {
#clock-cells = <0x0>;
compatible = "fixed-clock";
clock-frequency = <0x8000>;
clock-output-names = "osc32k";
phandle = <0xb>;
};clk-100M {
#clock-cells = <0x0>;
compatible = "fixed-clock";
clock-frequency = <0x5f5e100>;
clock-output-names = "fake-100M";
};
};cpus {
#address-cells = <0x0>;
#size-cells = <0x0>;cpu {
compatible = "arm,arm926ej-s";
device_type = "cpu";
};
};display-engine {
compatible = "allwinner,suniv-display-engine";
allwinner,pipelines = <0x2>;
status = "okay";
};soc {
compatible = "simple-bus";
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges;sram-controller@1c00000 {
compatible = "allwinner,sun4i-a10-sram-controller";
reg = <0x1c00000 0x30>;
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges;sram@10000 {
compatible = "mmio-sram";
reg = <0x10000 0x1000>;
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges = <0x0 0x10000 0x1000>;sram-section@0 {
compatible = "allwinner,sun4i-a10-sram-d";
reg = <0x0 0x1000>;
status = "okay";
phandle = <0x13>;
};
};
};lradc@1c23400 {
compatible = "allwinner,sun4i-a10-lradc-keys";
reg = <0x1c23400 0x400>;
interrupts = <0x16>;
status = "okay";
vref-supply = <0x3>;button@200 {
label = "Volume Up";
linux,code = <0x73>;
channel = <0x0>;
voltage = <0x30d40>;
};button@400 {
label = "Volume Down";
linux,code = <0x72>;
channel = <0x0>;
voltage = <0x61a80>;
};button@600 {
label = "Select";
linux,code = <0x161>;
channel = <0x0>;
voltage = <0x927c0>;
};button@800 {
label = "Start";
linux,code = <0x160>;
channel = <0x0>;
voltage = <0xc3500>;
};
};spi@1c05000 {
compatible = "allwinner,suniv-spi", "allwinner,sun8i-h3-spi";
reg = <0x1c05000 0x1000>;
interrupts = <0xa>;
clocks = <0x4 0x11 0x4 0x11>;
clock-names = "ahb", "mod";
resets = <0x4 0x4>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
pinctrl-names = "default";
pinctrl-0 = <0x5>;flash@0 {
#address-cells = <0x1>;
#size-cells = <0x1>;
compatible = "winbond,w25q128", "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <0x2625a00>;partitions {
compatible = "fixed-partitions";
#address-cells = <0x1>;
#size-cells = <0x1>;partition@0 {
label = "u-boot";
reg = <0x0 0x100000>;
read-only;
};partition@100000 {
label = "dtb";
reg = <0x100000 0x10000>;
read-only;
};partition@110000 {
label = "kernel";
reg = <0x110000 0x400000>;
read-only;
};partition@510000 {
label = "rootfs";
reg = <0x510000 0xaf0000>;
};
};
};
};spi@1c06000 {
compatible = "allwinner,suniv-spi", "allwinner,sun8i-h3-spi";
reg = <0x1c06000 0x1000>;
interrupts = <0xb>;
clocks = <0x4 0x12 0x4 0x12>;
clock-names = "ahb", "mod";
resets = <0x4 0x5>;
status = "disabled";
#address-cells = <0x1>;
#size-cells = <0x0>;
};lcd-controller@1c0c000 {
compatible = "allwinner,suniv-tcon";
reg = <0x1c0c000 0x1000>;
interrupts = <0x1d>;
clocks = <0x4 0x15 0x4 0x39 0x6>;
clock-names = "ahb", "tcon-ch0", "tcon-ch1";
clock-output-names = "tcon-pixel-clock";
resets = <0x4 0x8>;
reset-names = "lcd";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x7>;ports {
#address-cells = <0x1>;
#size-cells = <0x0>;port@0 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x0>;endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x8>;
phandle = <0x16>;
};
};port@1 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x1>;endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x9>;
phandle = <0x17>;
};
};
};
};mmc@1c0f000 {
compatible = "allwinner,suniv-mmc", "allwinner,sun7i-a20-mmc";
reg = <0x1c0f000 0x1000>;
clocks = <0x4 0xe 0x4 0x28 0x4 0x2a 0x4 0x29>;
clock-names = "ahb", "mmc", "output", "sample";
resets = <0x4 0x1>;
reset-names = "ahb";
interrupts = <0x17>;
pinctrl-names = "default";
pinctrl-0 = <0xa>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
vmmc-supply = <0x3>;
bus-width = <0x4>;
broken-cd;
};mmc@1c10000 {
compatible = "allwinner,suniv-mmc", "allwinner,sun7i-a20-mmc";
reg = <0x1c10000 0x1000>;
clocks = <0x4 0xf 0x4 0x2b 0x4 0x2d 0x4 0x2c>;
clock-names = "ahb", "mmc", "output", "sample";
resets = <0x4 0x2>;
reset-names = "ahb";
interrupts = <0x18>;
status = "disabled";
#address-cells = <0x1>;
#size-cells = <0x0>;
};clock@1c20000 {
compatible = "allwinner,suniv-ccu";
reg = <0x1c20000 0x400>;
clocks = <0x6 0xb>;
clock-names = "hosc", "losc";
#clock-cells = <0x1>;
#reset-cells = <0x1>;
phandle = <0x4>;
};interrupt-controller@1c20400 {
compatible = "allwinner,suniv-ic";
reg = <0x1c20400 0x400>;
interrupt-controller;
#interrupt-cells = <0x1>;
phandle = <0x1>;
};pinctrl@1c20800 {
compatible = "allwinner,suniv-pinctrl";
reg = <0x1c20800 0x400>;
interrupts = <0x26 0x27 0x28>;
clocks = <0x4 0x24 0x6 0xb>;
clock-names = "apb", "hosc", "losc";
gpio-controller;
interrupt-controller;
#interrupt-cells = <0x3>;
#gpio-cells = <0x3>;
phandle = <0xd>;spi0-pins-pc {
pins = "PC0", "PC1", "PC2", "PC3";
function = "spi0";
phandle = <0x5>;
};lcd-rgb666-pins {
pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", "PD20", "PD21";
function = "lcd";
phandle = <0x7>;
};rtp-pins {
pins = "PA0", "PA1", "PA2", "PA3";
function = "rtp";
phandle = <0xe>;
};uart-pins-pe {
pins = "PE0", "PE1";
function = "uart0";
phandle = <0x10>;
};uart-pins-pe78 {
pins = "PE7", "PE8";
function = "uart2";
phandle = <0x11>;
};i2c0 {
pins = "PE11", "PE12";
function = "i2c0";
phandle = <0xc>;
};mmc0-pins {
pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
function = "mmc0";
phandle = <0xa>;
};pwm0 {
pins = "PE12";
function = "pwm0";
};pwm1 {
pins = "PE6";
function = "pwm1";
phandle = <0xf>;
};
};i2c@1C27000 {
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x1c27000 0x400>;
interrupts = <0x7>;
clocks = <0x4 0x21>;
resets = <0x4 0x14>;
pinctrl-names = "default";
pinctrl-0 = <0xc>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};touchscreen@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
interrupt-parent = <0xd>;
interrupts = <0x4 0x3 0x2>;
pinctrl-names = "default";
irq-gpios = <0xd 0x4 0x3 0x0>;
reset-gpios = <0xd 0x4 0x9 0x0>;
touchscreen-swapped-x-y;
};touchscreen@14 {
compatible = "goodix,gt911";
reg = <0x14>;
interrupt-parent = <0xd>;
interrupts = <0x4 0x3 0x2>;
pinctrl-names = "default";
irq-gpios = <0xd 0x4 0x3 0x0>;
reset-gpios = <0xd 0x4 0x9 0x0>;
touchscreen-swapped-x-y;
};
};rtp@1c24800 {
compatible = "allwinner,sun4i-a10-ts";
reg = <0x1c24800 0x100>;
interrupts = <0x14>;
allwinner,ts-attached;
#thermal-sensor-cells = <0x0>;
pinctrl-names = "default";
pinctrl-0 = <0xe>;
status = "okay";
};pwm@1c21000 {
compatible = "allwinner,sun7i-a20-pwm";
reg = <0x1c21000 0xc>;
clocks = <0x6>;
#pwm-cells = <0x3>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0xf>;
};timer@1c20c00 {
compatible = "allwinner,suniv-timer";
reg = <0x1c20c00 0x90>;
interrupts = <0xd>;
clocks = <0x6>;
};watchdog@1c20ca0 {
compatible = "allwinner,sun6i-a31-wdt";
reg = <0x1c20ca0 0x20>;
interrupts = <0x10>;
status = "okay";
};serial@1c25000 {
compatible = "snps,dw-apb-uart";
reg = <0x1c25000 0x400>;
interrupts = <0x1>;
reg-shift = <0x2>;
reg-io-width = <0x4>;
clocks = <0x4 0x25>;
resets = <0x4 0x17>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x10>;
rts-gpio = <0xd 0x4 0x9 0x0>;
rs485-rts-active-high;
rs485-rts-delay = <0x0 0x0>;
linux,rs485-enabled-at-boot-time;
};serial@1c25400 {
compatible = "snps,dw-apb-uart";
reg = <0x1c25400 0x400>;
interrupts = <0x2>;
reg-shift = <0x2>;
reg-io-width = <0x4>;
clocks = <0x4 0x26>;
resets = <0x4 0x18>;
status = "disabled";
};serial@1c25800 {
compatible = "snps,dw-apb-uart";
reg = <0x1c25800 0x400>;
interrupts = <0x3>;
reg-shift = <0x2>;
reg-io-width = <0x4>;
clocks = <0x4 0x27>;
resets = <0x4 0x19>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x11>;
rts-gpio = <0xd 0x4 0xa 0x0>;
rs485-rts-active-high;
rs485-rts-delay = <0x0 0x0>;
linux,rs485-enabled-at-boot-time;
};usb@1c13000 {
compatible = "allwinner,suniv-musb";
reg = <0x1c13000 0x400>;
clocks = <0x4 0x13>;
resets = <0x4 0x6>;
interrupts = <0x1a>;
interrupt-names = "mc";
phys = <0x12 0x0>;
phy-names = "usb";
extcon = <0x12 0x0>;
allwinner,sram = <0x13 0x1>;
status = "okay";
dr_mode = "otg";
};phy@1c13400 {
compatible = "allwinner,suniv-usb-phy";
reg = <0x1c13400 0x10>;
reg-names = "phy_ctrl";
clocks = <0x4 0x30>;
clock-names = "usb0_phy";
resets = <0x4 0x0>;
reset-names = "usb0_reset";
#phy-cells = <0x1>;
status = "okay";
usb0_id_det-gpio = <0xd 0x4 0x2 0x0>;
phandle = <0x12>;
};display-frontend@1e00000 {
compatible = "allwinner,suniv-display-frontend";
reg = <0x1e00000 0x20000>;
interrupts = <0x1e>;
clocks = <0x4 0x1b 0x4 0x38 0x4 0x35>;
clock-names = "ahb", "mod", "ram";
resets = <0x4 0xe>;
status = "disabled";
phandle = <0x2>;ports {
#address-cells = <0x1>;
#size-cells = <0x0>;port@1 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x1>;endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x14>;
phandle = <0x15>;
};
};
};
};display-backend@1e60000 {
compatible = "allwinner,suniv-display-backend";
reg = <0x1e60000 0x10000>;
reg-names = "be";
interrupts = <0x1f>;
clocks = <0x4 0x1a 0x4 0x37 0x4 0x36>;
clock-names = "ahb", "mod", "ram";
resets = <0x4 0xd>;
reset-names = "be";
assigned-clocks = <0x4 0x37>;
assigned-clock-rates = <0x11e1a300>;ports {
#address-cells = <0x1>;
#size-cells = <0x0>;port@0 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x0>;endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x15>;
phandle = <0x14>;
};
};port@1 {
#address-cells = <0x1>;
#size-cells = <0x0>;
reg = <0x1>;endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x16>;
phandle = <0x8>;
};
};
};
};
};aliases {
serial0 = "/soc/serial@1c25000";
serial2 = "/soc/serial@1c25800";
spi0 = "/soc/spi@1c05000";
};chosen {
stdout-path = "serial0:115200n8";
};panel {
compatible = "okaya,rs800480t-7x0gp", "simple-panel";
#address-cells = <0x1>;
#size-cells = <0x0>;port@0 {
reg = <0x0>;
#address-cells = <0x1>;
#size-cells = <0x0>;endpoint@0 {
reg = <0x0>;
remote-endpoint = <0x17>;
phandle = <0x9>;
};
};
};vcc3v3 {
compatible = "regulator-fixed";
regulator-name = "vcc3v3";
regulator-min-microvolt = <0x325aa0>;
regulator-max-microvolt = <0x325aa0>;
phandle = <0x3>;
};
};</code>
应该是不用设置codec,只要设置好pwm就行。codec只要在linux做好驱动就行了
离线
大帅 说:晕哥 说:可能在包涵的 dtsi 文件里面
在\f1c500s_kernel\sound\soc\里面发现suniv文件夹,好像是他自己增加的,官方的名字是sunxi,
\f1c500s_kernel\sound\soc\suniv\下面,他自己写了几个文件:
miyoo.c
Makefile
Kconfig好像这才是F1c100s的codec驱动,目前不懂,推测的。
对就是这个,不过得研究一下源码,我编译成ko后,安装老是出错
@kekemuyu 老兄,你安装出错,错误是啥? 是不是自动创建设备节点的时候错了?
最近编辑记录 大帅 (2019-10-28 15:19:29)
离线
kekemuyu 说:大帅 说:在\f1c500s_kernel\sound\soc\里面发现suniv文件夹,好像是他自己增加的,官方的名字是sunxi,
\f1c500s_kernel\sound\soc\suniv\下面,他自己写了几个文件:
miyoo.c
Makefile
Kconfig好像这才是F1c100s的codec驱动,目前不懂,推测的。
对就是这个,不过得研究一下源码,我编译成ko后,安装老是出错
@kekemuyu 老兄,你安装出错,错误是啥? 是不是自动创建设备节点的时候错了?
我是把miyoo得声卡驱动源码在主线4.15内核编译得,由于主线4.15内核得配置和miyoo内核配置不一样,所以安装失败。需要检查miyoo得内核配置和主线内核配置哪里不同。
离线
离线
离线
求一份nes移植教程,为什么我老是报错那个声卡
离线