kingfisher radio: radio chip does not boot on flash

Description

Hi  have a kingfisher rev M04

The original symptom was that the radio does not start.

After some investigation, I found out that the init of the radio chip fails:

I narrowed down the test case to this:

#si_init

#si_ctl /dev/i2c-12 0x65 -b fm
si46xx_boot_flash(0x00008000)
si46xx_init_patch()
si46xx_load_init()
Loading: /lib/firmware/radio/patch.bin (5796 bytes)
si46xx_load_init()
si46xx_flash_load(0x00008000)
si46xx_boot()
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(PIN_CONFIG_ENABLE, 0x03)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_TUNE_FE_CFG, 0x00)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_SEEK_BAND_BOTTOM, 0x2256)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_SEEK_BAND_TOP, 0x2A26)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_SEEK_FREQUENCY_SPACING, 0x14)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(DIGITAL_IO_OUTPUT_SELECT, 0x8000)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(DIGITAL_IO_OUTPUT_FORMAT, 0x1040)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_RDS_CONFIG, 0x01)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_AUDIO_DE_EMPHASIS, 0x01)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
Invalid mode (no FW loaded?)

 


The interesting thing is that boot from file works:

m3ulcb:~# si_init

m3ulcb:~# /usr/bin/si_ctl /dev/i2c-12 0x65 -a fm -p US -t 128 -u 128 -c 87900
si46xx_init_mode(3)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_init_patch()
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_load_init()
Loading: /lib/firmware/radio/fm.bif (516492 bytes)

 

 

si46xx_boot()
Current mode:
FMHD is active
si46xx_set_property(PIN_CONFIG_ENABLE, 0x03)
si46xx_set_property(FM_TUNE_FE_CFG, 0x00)
si46xx_set_property(FM_SEEK_BAND_BOTTOM, 0x2256)
si46xx_set_property(FM_SEEK_BAND_TOP, 0x2A26)
si46xx_set_property(FM_SEEK_FREQUENCY_SPACING, 0x14)
si46xx_set_property(DIGITAL_IO_OUTPUT_SELECT, 0x8000)
si46xx_set_property(DIGITAL_IO_OUTPUT_FORMAT, 0x1040)
si46xx_set_property(FM_RDS_CONFIG, 0x01)
si46xx_set_property(FM_AUDIO_DE_EMPHASIS, 0x01)
si46xx_fm_tune_freq(87900)
SNR: 4 dB
RSSI: 23 dBuV
Frequency: 87900kHz
FREQOFF: 306
READANTCAP: 1

m3ulcb:~# si_ctl /dev/i2c-12 0x65 -l up
SNR: 11 dB
RSSI: 33 dBuV
Frequency: 88300kHz
FREQOFF: 304
READANTCAP: 19
m3ulcb:~# si_ctl /dev/i2c-12 0x65 -l up
SNR: 12 dB
RSSI: 30 dBuV
Frequency: 90900kHz
FREQOFF: 302
READANTCAP: 19

 

 

... but after si_init,

the boot from flash will fail:

m3ulcb:~# si_ctl /dev/i2c-12 0x65 -b fm
si46xx_boot_flash(0x00008000)
si46xx_init_patch()
si46xx_load_init()
Loading: /lib/firmware/radio/patch.bin (5796 bytes)
si46xx_load_init()
si46xx_flash_load(0x00008000)
si46xx_boot()
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(PIN_CONFIG_ENABLE, 0x03)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_TUNE_FE_CFG, 0x00)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_SEEK_BAND_BOTTOM, 0x2256)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_SEEK_BAND_TOP, 0x2A26)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_SEEK_FREQUENCY_SPACING, 0x14)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(DIGITAL_IO_OUTPUT_SELECT, 0x8000)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(DIGITAL_IO_OUTPUT_FORMAT, 0x1040)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_RDS_CONFIG, 0x01)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
si46xx_set_property(FM_AUDIO_DE_EMPHASIS, 0x01)
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
ERR_CMD
000: c0 00 00 80
PUP_STATE: bootloader
Invalid mode (no FW loaded?)

 

 

Environment

None

Activity

Thierry Bultel 
September 20, 2018 at 12:18 PM

Hi Kurokawa-san

Thanks, this what I had missed. This now works

You can close the Jira

Best regards,

Thierry

Harunobu Kurokawa 
September 20, 2018 at 12:03 PM

Would you use "si_firmware_update" before si_ctl ?

  1. si_init 

  2. si_firmware_update

  3. si_fm

Thierry Bultel 
September 19, 2018 at 6:46 AM

Hi Kurokawa-san,

please have a look on this issue that happens on a kingfisher revM04

Best regards

Thierry

Won't Fix

Details

Assignee

Reporter

Components

Affects versions

Priority

Created September 17, 2018 at 2:18 PM
Updated September 21, 2018 at 7:47 PM
Resolved September 20, 2018 at 1:27 PM