From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755523AbbE3Otb (ORCPT ); Sat, 30 May 2015 10:49:31 -0400 Received: from mail-pa0-f53.google.com ([209.85.220.53]:36040 "EHLO mail-pa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754549AbbE3OtX convert rfc822-to-8bit (ORCPT ); Sat, 30 May 2015 10:49:23 -0400 From: Feng Li Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Subject: [Question] Reading hardware registers Message-Id: <4DED2452-7055-413A-A31C-AA2D617459F2@gmail.com> Date: Sat, 30 May 2015 22:49:13 +0800 To: linux-kernel@vger.kernel.org Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\)) X-Mailer: Apple Mail (2.2098) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi experts, I need your help. I have written a simple driver on S3C6410 arm board. I define my resource. static struct resource inkprinter_resources[] = { [0] = { .start = S3C64XX_PA_INKPRINTER, .end = S3C64XX_PA_INKPRINTER + S3C64XX_SZ_INKPRINTER, .flags = IORESOURCE_MEM, }, [1] = { .start = IRQ_EINT(1), .end = IRQ_EINT(1), .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, } }; I want to keep trigger the interrupt when it’s low level. But it doesn’t keep trigger when it’s low. It only calls interrupt routine once. So I need print out interrupt hardware registers values for debugging. EINT0CON0 0x7F008900 R/W External Interrupt configuration Register 0 0x0 EINT0CON1 0x7F008904 R/W External Interrupt configuration Register 1 0x0 EINT0FLTCON0 0x7F008910 R/W External Interrupt Filter Control Register 0 0x0 EINT0FLTCON1 0x7F008914 R/W External Interrupt Filter Control Register 1 0x0 EINT0FLTCON2 0x7F008918 R/W External Interrupt Filter Control Register 2 0x0 EINTF0LTCON3 0x7F00891C R/W External Interrupt Filter Control Register 3 0x0 I know I’m wrong with using `readl(0x7F008900)`, it reads virtual address. Maybe I need map it to kernel virtual address firstly. How could I read hardware address, instead of virtual address? If I need map, which kernel function should I choose, ioremap/vmap...? Millions of thanks. Regards, Alex Feng