도와주세요!!
기본 커널 소스에 ax88796b에는 platform_driver 통해서 probe를 하게 되는데요.
ez-s3c2440보드에 확장 포트를 이용해서 ax88180(Gigabit ethernet)을 사용할려고 하는데요.
기본 커널 소스에 포함되어있는 것을 모듈화해서 올리면 probe가 잘되는데요.
ax88180에서는 platform_driver_register에서 probe가 되지 않네요.
ax88796과 ax88180 디바이스 드라이버 소스를 비교해봤는데 ax88180이 안되는 이유를 잘 모르겠습니다.
디바이스드라이버 소스는 첨부했습니다.
답변 부탁드립니다.
답변 감사합니다.
probe는 falinux-ez-s3c2440.c 파일을 수정해서 제대로 작동합니다.
resource 등록할 때 인터럽트하고 메모리를 지정해 주는데 제대로 했는지 궁금합니다.
static struct resource ax88180_resources[] = {
[0] = {
.name = "ax88180-regs",
.start = S3C2410_CS2 + 0xff,
.end = S3C2410_CS2 + 0xff + 0x00010000,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_EINT16,
.end = IRQ_EINT16,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device ax88180 = {
.name = "ax88180",
.id = -1,
.num_resources = ARRAY_SIZE(ax88180_resources),
.resource = ax88180_resources,
};
static struct platform_device *falinuxs3c2440_devices[] __initdata = {
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c,
&s3c_device_rtc,
&s3c_device_iis,
&s3c_device_sdi,
&s3c_device_camif,
&s3c_device_ts,
&s3c_device_ax88796b,
&ax88180,
};
이런 식으로 수정했습니다.
probe 가 안된다는 것이 probe 자체가 호추리 안되는 건가요? 아니면 probe 시에 문제가 생기는 건가요?
platform driver 가 등록될때 name 이 동일해야 probe 함수가 호출이 됩니다.
보통 arch 쪽에서 setup 시에 등록이 되게 되어 있습니다.