정보

정보

PopOs 19.10이 설치된 HP Envy 13-ad001la가 있습니다. 카드 리더가 작동하지 않습니다. 사용하면 lspci이것이 Alcor Micro 장치 리더라는 것을 알 수 있습니다.

01:00.0 Unassigned class [ff00]: Alcor Micro Device 6625
    Subsystem: Hewlett-Packard Company Device 834a
    Flags: fast devsel, IRQ 255
    Memory at a1200000 (64-bit, non-prefetchable) [disabled] [size=4K]
    Capabilities: [40] Power Management version 3
    Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [80] Express Endpoint, MSI 00
    Capabilities: [100] Latency Tolerance Reporting

내가 이해한 바에 따르면 "할당되지 않은 클래스"는 Linux가 장치용 드라이버를 찾을 수 없음을 의미합니다. 해당 드라이버를 검색해보니 해당 드라이버가 "alcor_pci"(https://cateee.net/lkddb/web-lkddb/MISC_ALCOR_PCI.html) 로드되지 않아서 modprobe를 사용하여 로드했습니다.

 ~  lsmod | grep alcor     
alcor_pci              20480  0

그러나 그 후에도 여전히 작동하지 않으며 lshw다음과 같이 표시됩니다. RECLAMADO가 선언되지 않았음을 의미합니다.

*-pci:0
             descripción: PCI bridge
             producto: Sunrise Point-LP PCI Express Root Port #5
             fabricante: Intel Corporation
             id físico: 1c
             información del bus: pci@0000:00:1c.0
             versión: f1
             anchura: 32 bits
             reloj: 33MHz
             capacidades: pci normal_decode bus_master cap_list
             configuración: driver=pcieport
             recursos: irq:122 memoria:a1200000-a12fffff
           *-generic NO RECLAMADO
                descripción: Unassigned class
                producto: Alcor Micro
                fabricante: Alcor Micro
                id físico: 0
                información del bus: pci@0000:01:00.0
                versión: 00
                anchura: 64 bits
                reloj: 33MHz
                capacidades: cap_list
                configuración: latency=0
                recursos: memoria:a1200000-a1200fff

누구든지 나를 도와줄 수 있나요? 모듈을 로드한 후 다른 작업을 수행해야 하는지 모르겠습니다.

답변1

AU6625 장치 ID는 에만 추가되므로 작동하지 않습니다.리눅스 5.6.

(일부 운전자"강제 사용" 모듈은 일치하지 않더라도 지원하지만 카드 리더가 이를 지원하기를 정말 바라지 않습니다)

답변2

(이 기사는 프랑스어에서 영어로 자동 번역되었습니다.)

안녕하세요.
이 카드에 대한 내 경험은 다음과 같습니다.

*"Alcor Micro AU6625 PCI-E Flash card reader controller"*

Linux 커널을 다시 컴파일하려는 경우 카드는 이미 커널에 포함된 AU6621 드라이버(커널 버전 5.5.6 기준)와 잘 작동하는 것 같습니다. 소스 코드에서 모듈의 "이름을 바꾸고" Linux 커널을 다시 컴파일하면 됩니다. 이것은 커널 버전 5.5.9부터 작동합니다. 나는 이 커널 버전(5.5.9, 5.5.16, 5.6.7, 5.6.9)에 아무런 (명백한) 문제 없이 몇 달 동안 사용해 왔습니다.

내 환경:

"HP ENVY Laptop 13-ad1xx"
LSPCI
02:00.0 Unassigned class [ff00]: Alcor Micro AU6625 PCI-E Flash card reader controller
Debian
Stock linux kernel: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.6.7.tar.xz

경고합니다. 저는 개발자가 아니며 때때로 Linux 커널을 다시 컴파일하는 것을 좋아하는 시스템 관리자일 뿐입니다.

이 문서의 나머지 부분에서는 여러분이 Linux 커널을 다시 컴파일하는 방법을 이미 알고 있다고 가정합니다. 그렇지 않으면 이 프로세스를 계속하지 않는 것이 가장 좋습니다. 커널을 잘못 구축하고 실행하는 것은 매우 위험할 수 있으며 하드 드라이브의 모든 데이터가 손상될 수 있습니다.

소스 코드를 추출한 후 압축을 푼 커널 소스의 루트 디렉터리에서 다음 파일을 조정해야 합니다(셸 명령 "$ grep -i -n -r "AU662" *"를 통해 찾을 수 있음).

"6621"이 포함된 모든 참조를 "6625"로 변경합니다.

변경 전: $ grep -i -r -n "AU662" *

*drivers/misc/cardreader/alcor_pci.c:5: * Driver for Alcor Micro AU6601 and AU6621 controllers*
*drivers/misc/cardreader/alcor_pci.c:37:static const struct alcor_dev_cfg au6621_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:41:static const struct alcor_dev_cfg au6625_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:48:    { PCI_DEVICE(PCI_ID_ALCOR_MICRO, PCI_ID_AU6621),*
*drivers/misc/cardreader/alcor_pci.c:49:        .driver_data = (kernel_ulong_t)&au6621_cfg },*
*drivers/misc/cardreader/alcor_pci.c:50:    { PCI_DEVICE(PCI_ID_ALCOR_MICRO, PCI_ID_AU6625),*
*drivers/misc/cardreader/alcor_pci.c:51:        .driver_data = (kernel_ulong_t)&au6625_cfg },*
*drivers/misc/cardreader/Kconfig:8:   au6621.*
*drivers/mmc/host/alcor.c:5: * Driver for Alcor Micro AU6601 and AU6621 controllers*
*drivers/mmc/host/alcor.c:892:      /* The clk will not work on au6621. We need to trigger data*
*include/linux/alcor_pci.h:5: * Driver for Alcor Micro AU6601 and AU6621 controllers*
*include/linux/alcor_pci.h:19:#define PCI_ID_AU6621             0x6621*
*include/linux/alcor_pci.h:20:#define PCI_ID_AU6625             0x6625*
*include/linux/alcor_pci.h:36: * 0x10 - ADMA phy address. AU6621 only?*
*include/linux/alcor_pci.h:45: * The au6601 and au6621 have different DMA engines with different issues. One*
*include/linux/alcor_pci.h:46: * For example au6621 engine is triggered by addr change. No other interaction*
*include/linux/alcor_pci.h:54:#define AU6621_DMA_PAGE_CNT           0x05*
*include/linux/alcor_pci.h:57:/* ADMA ctrl? AU6621 only. */*
*include/linux/alcor_pci.h:58:#define AU6621_DMA_CTRL               0x0c*
*include/linux/alcor_pci.h:59:#define AU6621_DMA_ENABLE         BIT(0)*

변경 후:

*drivers/misc/cardreader/alcor_pci.c:5: * Driver for Alcor Micro AU6601 and AU6625 controllers*
*drivers/misc/cardreader/alcor_pci.c:37:static const struct alcor_dev_cfg au6625_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:41:/*static const struct alcor_dev_cfg au6625_cfg = {*
*drivers/misc/cardreader/alcor_pci.c:48:    { PCI_DEVICE(PCI_ID_ALCOR_MICRO, PCI_ID_AU6625),*
*drivers/misc/cardreader/alcor_pci.c:49:        .driver_data = (kernel_ulong_t)&au6625_cfg },*
*drivers/misc/cardreader/Kconfig:8:   au6625.*
*drivers/mmc/host/alcor.c:5: * Driver for Alcor Micro AU6601 and AU6625 controllers*
*drivers/mmc/host/alcor.c:892:      /* The clk will not work on au6625. We need to trigger data*
*include/linux/alcor_pci.h:5: * Driver for Alcor Micro AU6601 and AU6625 controllers*
*include/linux/alcor_pci.h:19:#define PCI_ID_AU6621             0x6621*
*include/linux/alcor_pci.h:20:#define PCI_ID_AU6625             0x6625*
*include/linux/alcor_pci.h:36: * 0x10 - ADMA phy address. AU6625 only?*
*include/linux/alcor_pci.h:45: * The au6601 and au6625 have different DMA engines with different issues. One*
*include/linux/alcor_pci.h:46: * For example au6625 engine is triggered by addr change. No other interaction*
*include/linux/alcor_pci.h:54:#define AU6625_DMA_PAGE_CNT           0x05*
*include/linux/alcor_pci.h:57:/* ADMA ctrl? AU6625 only. */*
*include/linux/alcor_pci.h:58:#define AU6625_DMA_CTRL               0x0c*
*include/linux/alcor_pci.h:59:#define AU6625_DMA_ENABLE         BIT(0)*

두 가지 중요한 사항:

  • 커널 5.6.x부터 AU6625 드라이버의 부팅이 커널에 포함되어 있는 것 같지만 이 포함된 드라이버는 아직 작동하지 않는 것 같습니다(적어도 내 구성에서는 현재 5.6.9 커널까지는 작동하지 않습니다). 사용) 따라서 이 새 섹션은 "주석 처리"되거나 코드에서 제거되어야 합니다.

  • 새로 컴파일된 커널을 재부팅한 후 "lspci" 명령을 실행하면 "할당되지 않은 클래스..."가 계속 표시됩니다.
    나를 위한

    02:00.0 할당되지 않은 카테고리[ff00]: Alcor Micro AU6625 PCI-E 플래시 카드 리더 컨트롤러

하지만 어쨌든 이 카드는 훌륭하게 작동하며 다른 카드처럼 내 파일 관리자(Nautilus)에 설치됩니다.

정보

May 10 13:35:35 MylapX kernel: [    0.818161] pci 0000:02:00.0: [1aea:6625] type 00 class 0xff0000
May 10 13:35:35 MylapX kernel: [    0.818209] pci 0000:02:00.0: reg 0x10: [mem 0xb4200000-0xb4200fff 64bit]
May 10 13:35:35 MylapX kernel: [    0.818386] pci 0000:02:00.0: supports D1 D2
May 10 13:35:35 MylapX kernel: [    0.818388] pci 0000:02:00.0: PME# supported from D1 D2 D3hot D3cold

May 10 13:35:35 MylapX kernel: [    2.845290] alcor_pci 0000:02:00.0: enabling device (0000 -> 0002)

May 10 13:35:39 MylapX kernel: [    7.617586] mmc0: Skipping voltage switch
May 10 13:35:39 MylapX kernel: [    7.877031] mmc0: new high speed SDXC card at address aaaa
May 10 13:35:39 MylapX kernel: [    7.880661] mmcblk0: mmc0:aaaa ACLCF 119 GiB 
May 10 13:35:39 MylapX kernel: [    7.896324]  mmcblk0: p1

fdisk -l

Disk /dev/mmcblk0: 119.9 GiB, 127865454592 bytes, 249737216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device         Boot Start       End   Sectors   Size Id Type
/dev/mmcblk0p1      32768 249737215 249704448 119.1G  7 HPFS/NTFS/exFAT

$df-h

Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  120G   98G   22G  82% /media/user/3561-6331

관련 정보