[問題] ARM的SPI無法使用iowrite8()

看板LinuxDev作者 (微笑)時間16年前 (2009/09/27 20:48), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
各位先進好 我使用的kernel是 2.6.14 為什麼使用iowrite8()去寫入值到SPCON這類型暫存器時 之後去使用mdelay() 最後利用ioread8()讀取時都是0x00 對了, 我有先使用ioremap()把物理位址應射到虛擬位址 這邊都是ok的,沒出錯 最後補充一下 同樣動作我對GPIO暫存器讀寫都很正常 唯獨在SPI就怪怪的 麻煩各位了,謝謝 我把部分程式碼貼上來,讓大家看看那邊有問題 以下是照者執行順序所貼上的 static void __iomem *s3c2410_SPI_base; . . . if (request_mem_region(0x59000020, 0x59000034 - 0x59000020 +1 ,"s3c2410-spi") == NULL) goto error; s3c2410_SPI_base = ioremap(0x59000020, 0x59000034 - 0x59000020 +1 ); if (s3c2410_SPI_base == NULL) goto error; . . . gpgcon &= 0xffff033f; gpgcon |= 0x0000fcc0; iowrite32(gpgcon,S3C2410_GPGCON); udelay(10); printk("GPGCON = %x \n",ioread32(S3C2410_GPGCON));//這邊有印出正確的值 gpgup &= (0xff00); gpgup |= 0x0088; iowrite16(gpgup,S3C2410_GPGUP); udelay(10); printk("GPGUP = %x \n",ioread16(S3C2410_GPGUP));//這邊也ok . . . iowrite8(0xc1,s3c2410_SPI_base+S3C2410_SPCON); mdelay(1); printk("SPCON = 0x%x \n",ioread8(s3c2410_SPI_base+S3C2410_SPCON)); 但是印出來的都是0x00 這邊就搞不懂了,為什麼會這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.90.208 ※ 編輯: Smile365Day 來自: 219.87.77.101 (09/28 10:54)

09/29 15:37, , 1F
你在做SPI的printk時, 下面同樣在多複製幾行printk()看有沒
09/29 15:37, 1F

09/29 15:38, , 2F
有其他數據跑出來
09/29 15:38, 2F

10/09 15:00, , 3F
已經加上mdelay()就是怕她有延遲時間,但還是不行
10/09 15:00, 3F

10/09 15:01, , 4F
我想應該是跟2.6.14版本有關西吧...此版並沒有spi
10/09 15:01, 4F
文章代碼(AID): #1Alryn1N (LinuxDev)
文章代碼(AID): #1Alryn1N (LinuxDev)