Skip to main content
ไธฒ่กŒๅค–่ฎพๆŽฅๅฃ๏ผˆSPI๏ผ‰ๆ˜ฏไธ€็งไปฅๅ…จๅŒๅทฅๆจกๅผๅทฅไฝœ็š„ๅŒๆญฅไธฒ่กŒๆ•ฐๆฎ้“พ่ทฏใ€‚SPI ไนŸ่ขซ็งฐไธบ 4 ็บฟไธฒ่กŒๆ€ป็บฟใ€‚
SPI ๆ•ฐๆฎๆต

ๅ›พ๏ผšSPI ๆ•ฐๆฎๆต

SPI ๆ ธๅฟƒๆ”ฏๆŒๅŒๅ‘ SPI ๆ ‡ๅ‡†ใ€็‚นๅฏน็‚นไปฅๅŠๆŽงๅˆถๅ™จ-็›ฎๆ ‡ๅ่ฎฎใ€‚SPI ๆ ธๅฟƒไฝฟ็”จๅ››ๆก็‰‡้€‰็บฟ๏ผˆSPI_CS#_N๏ผ‰ๆฅ้€‰ๆ‹ฉ่ฆ้€šไฟก็š„็›ฎๆ ‡่ฎพๅค‡ใ€‚ไปฅไธ‹ไธคๆกๆ•ฐๆฎ็บฟๆ”ฏๆŒๅŒๅ‘ๆ•ฐๆฎไผ ่พ“ใ€‚
  • SPI_DATA_MO_SI๏ผšๆŽงๅˆถๅ™จๆ•ฐๆฎ่พ“ๅ‡บ๏ผŒ็›ฎๆ ‡ๆ•ฐๆฎ่พ“ๅ…ฅใ€‚
  • SPI_DATA_MI_SO๏ผšๆŽงๅˆถๅ™จๆ•ฐๆฎ่พ“ๅ…ฅ๏ผŒ็›ฎๆ ‡ๆ•ฐๆฎ่พ“ๅ‡บใ€‚
่กจ๏ผš SPI ไธญ็š„ๆ•ฐๆฎๅ’ŒๆŽงๅˆถไฟกๅท
ๆ•ฐๆฎไฟกๅทMOSI๏ผšๆŽงๅˆถๅ™จๆ•ฐๆฎ่พ“ๅ‡บ๏ผŒ็›ฎๆ ‡ๆ•ฐๆฎ่พ“ๅ…ฅใ€‚
MISO๏ผšๆŽงๅˆถๅ™จๆ•ฐๆฎ่พ“ๅ…ฅ๏ผŒ็›ฎๆ ‡ๆ•ฐๆฎ่พ“ๅ‡บใ€‚
ๆŽงๅˆถไฟกๅทSCLK๏ผš็”ฑๆŽงๅˆถๅ™จ็”Ÿๆˆๅนถ่พ“ๅ…ฅๅˆฐๆ‰€ๆœ‰็›ฎๆ ‡็š„ๆ—ถ้’Ÿใ€‚
CS๏ผš็‰‡้€‰๏ผŒๅฝ“ๆŽงๅˆถๅ™จ็ฝฎไฝๅ…ถ CS_N ไฟกๅทๆ—ถ๏ผŒ็›ฎๆ ‡่ขซ้€‰ไธญใ€‚

SPI ็‰นๆ€ง

ๆœฌ่Š‚ไป‹็ป SPI ไธฒ่กŒๅผ•ๆ“Žไผ ่พ“ๆจกๅผไปฅๅŠๆฏ็งๆจกๅผ็š„ไธๅŒไฝฟ็”จๅœบๆ™ฏใ€‚ๆœฌ่Š‚่ฟ˜ไป‹็ปๅœจๅ„ไธชๅญ็ณป็ปŸ SPI ้ฉฑๅŠจ็จ‹ๅบไธญๅฏ็”จ็š„ FIFO ๅ’Œ DMAใ€‚ ่กจ๏ผš SPI ไผ ่พ“ๆจกๅผ
ๅญ็ณป็ปŸไผ ่พ“ๆจกๅผ่ฏดๆ˜Ž
Linux
  • FIFO๏ผˆไฝŽ้€Ÿ๏ผ‰
  • CPU DMA๏ผˆ้ซ˜้€Ÿ๏ผ‰
  • GSI
ๆ”ฏๆŒ็š„ๆœ€ๅคง้…็ฝฎ้€Ÿๅบฆไธบ 50 MHzใ€‚
BootFIFO
  • ไผ ่พ“้€Ÿ็އๆœ€้ซ˜ๅฏ่พพ 50 MHzใ€‚ไธปๆœบๅฐ† SPI ๆ—ถ้’Ÿ้ข‘็އ่ฎพ็ฝฎไธบๆœ€ๆŽฅ่ฟ‘ๆ‰€่ฏทๆฑ‚้ข‘็އ็š„ๅ€ผใ€‚
  • ๆฏไธชไผ ่พ“ๅญ—ไธบ 4 ไฝๅˆฐ 32 ไฝใ€‚
  • ๆฏๆกๆ€ป็บฟๆœ€ๅคš 4 ไธช็‰‡้€‰๏ผˆCS๏ผ‰ใ€‚
  • ๅฏๅŠจ้˜ถๆฎตไธๆ”ฏๆŒ GSI ๆจกๅผใ€‚
  • ้ฉฑๅŠจ็จ‹ๅบไปฅ่ฝฎ่ฏขๆจกๅผๆ‰ง่กŒใ€‚
aDSP
  • ๅ…จๅŒๅทฅ
  • ๅŠๅŒๅทฅ
  • ๅŒๆญฅ
  • ไธฒ่กŒ้€šไฟก
  • ๆฒกๆœ‰ๆ˜พๅผ็š„้€šไฟกๅธงใ€้”™่ฏฏๆ ก้ชŒๆˆ–ๅฎšไน‰็š„ๆ•ฐๆฎๅญ—้•ฟใ€‚
  • ้€šไฟกไธฅๆ ผๅค„ไบŽๅŽŸๅง‹ไฝ็บงๅˆซใ€‚
  • ไผ ่พ“้€Ÿ็އๆœ€้ซ˜ๅฏ่พพ 50 MHzใ€‚ไธปๆœบๅฐ† SPI ๆ—ถ้’Ÿ้ข‘็އ่ฎพ็ฝฎไธบๆœ€ๆŽฅ่ฟ‘ๆ‰€่ฏทๆฑ‚้ข‘็އ็š„ๅ€ผใ€‚
  • ๆฏไธชไผ ่พ“ๅญ—ไธบ 4 ไฝๅˆฐ 32 ไฝใ€‚
  • ๆฏๆกๆ€ป็บฟๆœ€ๅคš 4 ไธช็‰‡้€‰๏ผˆCS๏ผ‰ใ€‚

SPI ๆŽฅๅฃ็ป„ไปถ

ๆœฌ่Š‚ๆไพ›ๆœ‰ๅ…ณๅญ็ณป็ปŸ้ฉฑๅŠจ็จ‹ๅบใ€ๅ†…ๆ ธ่ฎพๅค‡ๆ ‘่Š‚็‚นๅ’Œ็›ธๅ…ณๆ–‡ๆกฃ็š„ไฟกๆฏใ€‚ ่กจ๏ผš SPI ๆŽฅๅฃ๏ผšLinux
ๆ–‡ไปถ็ฑปๅž‹่ฏดๆ˜Ž
่ฎพๅค‡ๆ ‘ๆบ
Pinctrl ่ฎพ็ฝฎ
Qualcomm TEE ่ฎพ็ฝฎ
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/<chipset>/QUPAC_Access.c
่กจ๏ผš SPI ๆŽฅๅฃ๏ผšBoot
ๆ–‡ไปถ็ฑปๅž‹่ฏดๆ˜Ž
QUP v3 ไธฒ่กŒๅผ•ๆ“Ž้…็ฝฎ
  • QUP v3 ไธฒ่กŒๅผ•ๆ“Ž๏ผš/firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/BOOT.MXF.1.0.c1/boot_images/boot/Settings/Soc/<chipset>/Core/Buses/qup_common/<chipset>-qupv3.dtsi
  • GPIO ้…็ฝฎ๏ผš/firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/BOOT.MXF.1.0.c1/boot_images/boot/Settings/Soc/<chipset>/Core/Buses/qup_common/<chipset>-qupv3-pinctrl.dtsi
Qualcomm TEE ่ฎพ็ฝฎ
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/<chipset>/QUPAC_Access.c
่กจ๏ผš SPI ๆŽฅๅฃ๏ผšaDSP/SLPI/SDC
ๆ–‡ไปถ็ฑปๅž‹่ฏดๆ˜Ž
QUP v3 ไธฒ่กŒๅผ•ๆ“Ž้…็ฝฎ
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_common/config/<chipset>/adsp/ssc/qup_devcfg.c
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_fw/config/<chipset>/fw_devcfg.c
  • settings/buses/qup_common/config/<chipset>/adsp/ssc/qup_devcfg.json
ๅ›บไปถ้…็ฝฎ่ฎพ็ฝฎ
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_fw/config/<chipset>/fw_devcfg.c
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_fw/config/<chipset>/fw_devcfg.xml
่กจ๏ผš SPI ๆŽฅๅฃ๏ผšQualcomm TEE
ๆ–‡ไปถ็ฑปๅž‹่ฏดๆ˜Ž
QUP v3 ไธฒ่กŒๅผ•ๆ“Ž้…็ฝฎ
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/spi/qupv3/config/<chipset>/tz/spi_devcfg_user.c
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/spi/qupv3/config/<chipset>/tz/spi_devcfg_user.h
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/spi/qupv3/config/<chipset>/tz/spi_devcfg.xml
Qualcomm TEE ่ฎพ็ฝฎ
  • /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/<chipset>/QUPAC_Access.c

SPI API

ๆœฌ่Š‚ๅˆ—ๅ‡บไบ†ไปฅไธ‹ๅญ็ณป็ปŸ็š„ SPI APIใ€‚

SPI ่ฝฏไปถ่ฎพๅค‡ๆ ‘้…็ฝฎ

ๆœฌ่Š‚ๆไพ›ๆœ‰ๅ…ณ SPI ่ฎพๅค‡ๆ ‘้…็ฝฎไปฅๅŠ่ฎพๅค‡่Š‚็‚นๆ–‡ๆกฃ็š„ไฟกๆฏใ€‚

Linux

ๆœ‰ๅ…ณ่ฎพๅค‡ SPI ็š„่ฏฆ็ป†ไฟกๆฏ๏ผŒ่ฏทๅ‚้˜…ไปฅไธ‹ DTSI ๆ–‡ไปถใ€‚ ๆœ‰ๅ…ณ SPI ่ฎพๅค‡่Š‚็‚น็š„ๅ†…ๆ ธๆ–‡ๆกฃ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚้˜… https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/spi/qcom%2Cspi-geni-qcom.yaml๏ผŒไปฅๅŠ SPI ้ฉฑๅŠจ็จ‹ๅบๆ–‡ไปถ https://github.com/torvalds/linux/blob/master/drivers/spi/spi-geni-qcom.cใ€‚
ๆœ‰ๅ…ณ GPIO pinctrl ้…็ฝฎ็š„ๅ†…ๆ ธๆ–‡ๆกฃ๏ผŒ่ฏทๅ‚้˜…ไปฅไธ‹ๆ–‡ไปถใ€‚ QUP v3 ไธฒ่กŒๅผ•ๆ“Ž GPIO ็š„็›ธๅบ”้…็ฝฎๅญ˜ๅœจไบŽ pinctrl.dtsi ไธญๅนถๅทฒๅฎŒๆˆๆ˜ ๅฐ„ใ€‚ ไพ‹ๅฆ‚๏ผš
็กฎไฟ็‰นๅฎšไธฒ่กŒๅผ•ๆ“Ž็š„ๅ่ฎฎ้…็ฝฎๅœจ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/<chipset>/QUPAC_Access.c ๆ–‡ไปถไธญไฝฟ็”จ SPI ๅ่ฎฎใ€‚ๅฆ‚ๆœ‰้œ€่ฆ๏ผŒ่ฏทไฟฎๆ”นๆ‰€้œ€็š„่ฎพ็ฝฎ๏ผŒๆˆ–ๆŸฅ็œ‹ไธบ QUP v3 ไธฒ่กŒๅผ•ๆ“Žๅฎžไพ‹ๅˆ†้…็š„้ป˜่ฎค่ฎพ็ฝฎใ€‚ ไปฅไธ‹ๆ˜ฏๅฏ็”จ SPI ็š„็คบไพ‹้…็ฝฎใ€‚

Boot

ๆ นๆฎ Qualcomm Linux ่Šฏ็‰‡ไบงๅ“่ฆๆฑ‚๏ผŒๅœจ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/BOOT.MXF.1.0.c1/boot_images/boot/Settings/Soc/<chipset>/Core/Buses/qup_common/<chipset>-qupv3.dtsi ๆ–‡ไปถไธญ้…็ฝฎ QUP v3 ่ฎพ็ฝฎใ€‚
ๆณจๆ„่ฆๅฏ็”จๆ‰€้œ€็š„ QUP v3 ไธฒ่กŒๅผ•ๆ“Ž๏ผŒ่ฏทๅฐ† QUP v3 ๅŒ…่ฃ…ๅ™จ๏ผˆwrapper๏ผ‰่Š‚็‚น็Šถๆ€ๆ›ดๆ–ฐไธบ okay๏ผŒๅนถๅฐ†็›ธๅบ”็š„ไธฒ่กŒๅผ•ๆ“Ž่Š‚็‚นๆ›ดๆ–ฐไธบ disabled ็Šถๆ€ใ€‚
ไปฅไธ‹็คบไพ‹่Š‚็‚นๆœ‰ๅŠฉไบŽๅœจๅฏๅŠจ้˜ถๆฎต้…็ฝฎ QUP v3 ไธฒ่กŒๅผ•ๆ“Žใ€‚ QUP ๅŒ…่ฃ…ๅ™จ่Š‚็‚น็คบไพ‹
ไธฒ่กŒๅผ•ๆ“Žๅฎžไพ‹็š„็คบไพ‹่Š‚็‚น
ๆœ‰ๅ…ณ pinctrl ๅฎšไน‰๏ผŒ่ฏทๅ‚้˜… GPIO ้…็ฝฎๆ–‡ไปถ๏ผš/firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/BOOT.MXF.1.0.c1/boot_images/boot/Settings/Soc/<chipset>/Core/Buses/qup_common/<chipset>-qupv3-pinctrl.dtsiใ€‚ ็คบไพ‹ GPIO ้…็ฝฎ๏ผš
  • ๅฝ“้œ€ๆฑ‚ไธŽ้ป˜่ฎค้…็ฝฎไธๅŒๆ—ถ๏ผŒๅœจ <chipset>-qupv3-pinctrl.dtsi ไธญไฝฟ็”จ GPIO ้…็ฝฎไฟฎๆ”น่ฏฅๅฎใ€‚
  • ๆœ‰ๅ…ณๅฎๅฎšไน‰๏ผŒ่ฏทๅ‚้˜…ๅคดๆ–‡ไปถ่ทฏๅพ„ Settings/Include/gpio-dt.hใ€‚
ๅœจ็คบไพ‹ TLMM ่Š‚็‚นไธญๆ›ฟๆขๅฎใ€‚
ๆณจๆ„ๅœจๆ›ดๆ”น็ปŸไธ€ๅฏๆ‰ฉๅฑ•ๅ›บไปถๆŽฅๅฃ๏ผˆUEFI๏ผ‰้…็ฝฎไน‹ๅ‰๏ผŒ่ฏท้ชŒ่ฏ Qualcomm TEE ่ฎพ็ฝฎใ€‚็กฎไฟไธฒ่กŒๅผ•ๆ“Ž่Š‚็‚นๅค„ไบŽ FIFO_MODE ไธ”ๅฏไปŽๅบ”็”จๅค„็†ๅ™จ่ฎฟ้—ฎใ€‚้ชŒ่ฏๅŠ ่ฝฝ็š„ๅ่ฎฎๆ˜ฏๅฆ็ฌฆๅˆ่ฆๆฑ‚ใ€‚

aDSP/SDC

ๅ›บไปถๅœจ aDSP ๅญ็ณป็ปŸ็š„ๅฏๅŠจๅบๅˆ—ๆœŸ้—ดๅŠ ่ฝฝ SSC QUPใ€‚้…็ฝฎๆ–‡ไปถไฝไบŽ aDSP ๆž„ๅปบไธญ็š„ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_fw/config/<chipset>/fw_devcfg.c ๅ’Œ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_fw/config/<chipset>/fw_devcfg.xmlใ€‚ ไปฅไธ‹้…็ฝฎๆ˜ฏๅŠ ่ฝฝไบ† SPI ๅ›บไปถ็š„ SSC QUP SE4 ็š„็คบไพ‹ใ€‚
GPIO ้…็ฝฎ๏ผšQUP ้€š็”จ้ฉฑๅŠจ็จ‹ๅบไธญ็š„ๆฏไธชไธฒ่กŒๅผ•ๆ“Ž้ƒฝไฝฟ็”จ้ป˜่ฎค GPIO ้…็ฝฎ่ฟ›่กŒ้…็ฝฎใ€‚QUP ้€š็”จ้ฉฑๅŠจ็จ‹ๅบไผšๆ นๆฎไธบไธฒ่กŒๅผ•ๆ“ŽๅŠ ่ฝฝ็š„ๅ่ฎฎ่Žทๅ– GPIO ้…็ฝฎ๏ผŒไฝไบŽ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/ADSP.HT.5.5.c8/adsp_proc/core/settings/buses/qup_common/config/<chipset>/adsp/ssc/qup_instance_mapping.cใ€‚ ๅฏไปฅๆŒ‰ๅฆ‚ไธ‹ๆ–นๅผ่ฆ†็›–้ป˜่ฎค GPIO ้…็ฝฎใ€‚
TLMM_MAP ๆ˜ฏ็”จไบŽๅˆๅง‹ๅŒ–ๆดปๅŠจ็Šถๆ€ๅ’Œ็ก็œ ็Šถๆ€ GPIO ้…็ฝฎ็š„ๅฎใ€‚ไพ‹ๅฆ‚๏ผŒTLMM_MAP ๅฎ็š„็คบไพ‹็”จๆณ•ใ€‚

Qualcomm TEE

QUP v3 ่ฎฟ้—ฎ้…็ฝฎ่ฎพ็ฝฎไฝไบŽ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/spi/qupv3/interface/spi_devcfg.hใ€‚ ่ฆๅœจ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/spi/qupv3/config/<chipset>/tz/spi_devcfg_user.h ไธญไธบ SPI ๅฏ็”จ QUP v3 ไธฒ่กŒๅผ•ๆ“Ž๏ผŒ่ฏทๆŒ‰ๅฆ‚ไธ‹ๆ–นๅผๆทปๅŠ  #define TZ_USE_SPI_X๏ผˆX ไธบ SPI ไธฒ่กŒๅผ•ๆ“Ž็ผ–ๅท๏ผ‰ใ€‚
TZ_USE_SPI_<num> ็š„็ผ–ๅทๅŸบไบŽไธฒ่กŒๅผ•ๆ“Ž็š„ๅบๅท๏ผˆไปŽไธ€ๅผ€ๅง‹๏ผ‰ใ€‚ไพ‹ๅฆ‚๏ผŒๅฆ‚ๆžœๆœ‰ไธคไธช QUP๏ผšQUPV3_0 ๆœ‰ไธƒไธชไธฒ่กŒๅผ•ๆ“Ž๏ผŒQUPV3_1 ๆœ‰ๅ…ซไธชไธฒ่กŒๅผ•ๆ“Ž๏ผŒๅˆ™็”จๆˆทๅฟ…้กปๅฏ็”จ QUPV3_2_SE2ใ€‚ๅฎๅบ”ไธบ TZ_USE_SPI_9ใ€‚ GPIO ้…็ฝฎ๏ผšๅœจไปฅไธ‹็คบไพ‹ไธญ๏ผŒ้ฉฑๅŠจๅผบๅบฆๅ’ŒไธŠไธ‹ๆ‹‰ๆ นๆฎไปŽ MISO ๅผ€ๅง‹็š„ PIN ็ดขๅผ•่ฟ›่กŒ้…็ฝฎ๏ผŒไฝไบŽ settings/buses/spi/qupv3/config/<chipset>/tz/spi_devcfg_user.cใ€‚
ๅฏน Qualcomm TEE ๅญ็ณป็ปŸ็š„่ฎฟ้—ฎๆŽงๅˆถๆƒ้™ๅœจ QUPAC ็ญ–็•ฅไธญ้…็ฝฎ๏ผŒไฝไบŽ /firmware/qualcomm-linux-spf-1-0_ap_standard_oem_nomodem/TZ.XF.5.0/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/<chipset>/QUPAC_Access.cใ€‚

SPI ๅฏๅŠจ่ฐƒ่ฏ•๏ผˆbringup๏ผ‰

ๆœฌ่Š‚ไป‹็ปๅฆ‚ไฝ•ๅฏ็”จ Qualcomm Linux SPI ้ฉฑๅŠจ็จ‹ๅบใ€‚

Linux

่ฆ้ชŒ่ฏไธŽ่ฎพๅค‡็š„ SPI ้€šไฟก๏ผŒๅฟ…้กปๅฏ็”จๅ†…ๆ ธ้…็ฝฎใ€‚CONFIG_SPI_SPIDEV=m ่ฎพ็ฝฎๅทฒๅœจ็›ธๅบ”็š„ <chipset> defconfig ๆ–‡ไปถไธญๅฏ็”จใ€‚ๅœจๅ†…ๆ ธ่ฎพๅค‡ๆ ‘ไธญๅฏ็”จ็‰นๅฎš็š„ QUP v3 SPI ไธฒ่กŒๅผ•ๆ“Žๅฎžไพ‹ใ€‚

SPI ้…็ฝฎ

ๆœฌ่Š‚ๆไพ›ๆœ‰ๅ…ณ SPI ่ฝฏไปถ้ฉฑๅŠจๅ†…ๆ ธ้…็ฝฎๅ’Œ่ฎพๅค‡ๆ ‘่Š‚็‚นๆ›ดๆ”น็š„ไฟกๆฏใ€‚

Linux

ๆ”ฏๆŒ SPI ๆŽฅๅฃ้œ€่ฆไปฅไธ‹้ฉฑๅŠจๅ†…ๆ ธ้…็ฝฎใ€‚ ๅฟ…้กปๅฏ็”จไปฅไธ‹ๅ†…ๆ ธ้…็ฝฎใ€‚
  • CONFIG_QCOM_GENI_SE=y
  • CONFIG_SPI_QCOM_GENI=m
  • CONFIG_SPI_SPIDEV=m ็”จไบŽ้…็ฝฎ็”จๆˆท็ฉบ้—ดๅบ”็”จ็จ‹ๅบ
  • CONFIG_QCOM_GPI_DMA=m ็”จไบŽๅฏ็”จ GSI ๆ”ฏๆŒ
่ฆไธบๅ›ž็Žฏ้ชŒ่ฏๅฏ็”จ SPI ่Š‚็‚น๏ผŒ่ฏทๅฐ†ไปฅไธ‹่กฅไธๅบ”็”จๅˆฐ /arch/arm64/boot/dts/qcom/<chipset>.dtsi ๆ–‡ไปถใ€‚
ๆณจๆ„ๆ‚จๅบ”ๅฝ“็ผ–่ฏ‘ๅ†…ๆ ธ้…็ฝฎๅ’Œ่ฎพๅค‡ๆ ‘ๆ›ดๆ”นใ€‚ๅ†…ๆ ธ็ผ–่ฏ‘ๅฎŒๆˆๅŽ๏ผŒๅฏไปฅๅฐ†้•œๅƒๅŠ ่ฝฝๅˆฐ่ฎพๅค‡ไธŠไปฅ้ชŒ่ฏๆŽฅๅฃใ€‚ๆœ‰ๅ…ณๆŽฅๅฃ้ชŒ่ฏ็š„ไฟกๆฏ๏ผŒ่ฏทๅ‚้˜… SPI ้ชŒ่ฏ้ƒจๅˆ†ใ€‚

SPI ้ชŒ่ฏ

ๆœฌ่Š‚ไป‹็ป SPI ้ฉฑๅŠจ็จ‹ๅบ็š„้ชŒ่ฏ่ฟ‡็จ‹ๅ’Œๆต‹่ฏ•็ป“ๆžœใ€‚

Linux

่ฆไบคๅ‰็ผ–่ฏ‘ SPI ๅทฅๅ…ท๏ผŒ่ฏทๆ‰ง่กŒไปฅไธ‹ๆ“ไฝœใ€‚
  1. ไปŽ yocto/build-qcom-wayland/tmp-glibc/work-shared/<chipset>/kernel-source/tools/spi ่Žทๅ– SPI ๅทฅๅ…ทใ€‚ๆœ‰ๅ…ณ SPI ๅทฅๅ…ท็š„ๆ›ดๅคš่ฏฆ็ป†ไฟกๆฏ๏ผŒ่ฏทๅ‚้˜… https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/tools/spiใ€‚
  2. ๅฎ‰่ฃ…ไบคๅ‰็ผ–่ฏ‘ๅ™จใ€‚
  3. ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค่ฎพ็ฝฎไบคๅ‰็ผ–่ฏ‘็Žฏๅขƒใ€‚
  4. ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค็ผ–่ฏ‘่ฏฅๅทฅๅ…ทใ€‚

้ชŒ่ฏ SPI ่ฎพๅค‡

้€š่ฟ‡ๅœจ SSH shell ไธญๆฃ€ๆŸฅ dev ่Š‚็‚น๏ผˆ/dev/spidev1.0๏ผ‰ๆˆ–ไฝฟ็”จ ADB shell ๆฅ้ชŒ่ฏ้ฉฑๅŠจ็จ‹ๅบใ€‚ๆœ‰ๅ…ณๅฆ‚ไฝ•่ฟ่กŒ SSH ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚้˜… Use SSH ้ƒจๅˆ†ใ€‚
  1. ่ฆ้ชŒ่ฏ SPI ้ฉฑๅŠจ็จ‹ๅบ๏ผŒ่ฏทๆ‰ง่กŒไปฅไธ‹ๆ“ไฝœ๏ผš
    1. ไปฅๅฎฝๅฎน๏ผˆpermissive๏ผ‰ๆจกๅผๆ‰“ๅผ€ SSH shell๏ผŒๆˆ–ไฝฟ็”จ ADB shellใ€‚
    2. ๆŒ‚่ฝฝๆ–‡ไปถ็ณป็ปŸใ€‚
    3. ไฝฟ็”จ SCP ๆˆ–็ฑปไผผๅทฅๅ…ทไผ ่พ“ๆ–‡ไปถใ€‚ ไพ‹ๅฆ‚๏ผŒscp spidev_test root@10.92.175.138:/binใ€‚
    4. ่ต‹ไบˆๆ‰ง่กŒๆƒ้™ใ€‚
  2. ้ชŒ่ฏ SPI ่ฎพๅค‡ใ€‚ๅ‘ฝไปคๆ ผๅผไธบ ./spidev_test -D /dev/<spidev_node>ใ€‚
    ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคไปฅ่Žทๅ–ๆœ‰ๅ…ณ็”จๆณ•็š„ไฟกๆฏใ€‚
ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚

SPI ่ฐƒ่ฏ•

ๆœฌ่Š‚ไป‹็ป SPI ่ฝฏไปถ้ฉฑๅŠจ็š„้ป˜่ฎคๆ—ฅๅฟ—่ฎฐๅฝ•ๆ–นๆณ•๏ผŒไปฅๅฏ็”จๅฏน SPI ไผ ่พ“ๅคฑ่ดฅ็š„ๆ—ฅๅฟ—่ฎฐๅฝ•ใ€‚

Linux

SPI ้ฉฑๅŠจๆ—ฅๅฟ—้€š่ฟ‡ๅŠจๆ€่ฐƒ่ฏ•ๆ–นๆณ•ๅฏ็”จใ€‚ๅœจ <workspace_path_of_LINUX_kernel_image>/sources/kernel/kernel_platform/kernel/arch/arm64/configs/qcom_defconfig ไธญๅฏ็”จ CONFIG_DYNAMIC_DEBUG ไปฅๆ”ฏๆŒๅ†…ๆ ธ้ฉฑๅŠจ็š„ๅŠจๆ€่ฐƒ่ฏ•ใ€‚ ่ฆๅœจๅ†…ๆ ธๆ—ฅๅฟ—๏ผˆdmesg๏ผ‰ไธญๅฏ็”จๅนถๆŸฅ็œ‹ SPI ้ฉฑๅŠจๆ—ฅๅฟ—๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚

SPI ็คบไพ‹

ๆœ‰ๅ…ณไธŠๆธธ่ฎพๅค‡ๆ ‘ๅ‚่€ƒ็š„ไฟกๆฏ๏ผŒ่ฏทๅ‚้˜…ไปฅไธ‹ DTSI ๆ–‡ไปถใ€‚ ๆœ‰ๅ…ณ Qualcomm Linux ็กฌไปถ SoC ็š„่ฎพๅค‡ๆ ‘่Š‚็‚นไฟกๆฏ๏ผŒ่ฏทๅ‚้˜…ไปฅไธ‹ DTSI ๆ–‡ไปถใ€‚