[Spirit FM] mikereidis:
No, 4329 has TX and Rx.

You have FM_ANT_N and FM_ANT_P, maybe one of those is used for Tx in Tx mode.

Funny that FM_L = FM_OUT1 but FM_R = FM_R. Maybe FM_R is an input for mono, though I know it does stereo.

PCM_IN might be a digital way to get Tx audio In. There's lots of stuff that's undocumented; someone once posted the magic details in this thread to get FM Rx to go straight to BT inside the combo chip. And special stuff can be done with direct "peeks" and "pokes" in the memory of the FM/BT processor inside the combo chip..

Actually, only docs I have are some schematics and a bit of ancient source code.

I would have to add some debug hacks to my old HTCs to figure out how Broadcom does FM transmit. I was just making a joke actually, LOL.

Besides the code I have, and the bit maps of each "command" or "register" (both very important of course), this is pretty much the info I have on Broadcom chips:

enum BCM_FM_CMD { //
BC_REG_SYS = 0x00, // 0x00 FM enable, RDS enable
BC_REG_CTL, // 0x01 Band select, mono/stereo blend, mono/stereo select
BC_REG_RDS_CTL0, // 0x02 RDS/RDBS, flush FIFO
BC_REG_RDS_CTL1, // 0x03 Not used
BC_REG_AUD_PAUSE, // 0x04 Pause level and time constant
BC_REG_AUD_CTL0, // 0x05 Mute, volume, de-emphasis, route parameters, BW select
BC_REG_AUD_CTL1, // 0x06 Mute, volume, de-emphasis, route parameters, BW select
BC_REG_SRCH_CTL0, // 0x07 Search parameters such as stop level, up/down
BC_REG_SRCH_CTL1, // 0x08 Not used (except on BCM4330/20780 2 bytes: 0x0206)
BC_REG_SRCH_TUNE_MODE, // 0x09 Search/tune mode and stop
BC_REG_FREQ0, // 0x0a Set and get frequency
BC_REG_FREQ1, // 0x0b Set and get frequency
BC_REG_AF_FREQ0, // 0x0c Set alternate jump frequency
BC_REG_AF_FREQ1, // 0x0d Set alternate jump frequency
BC_REG_CARRIER, // 0x0e IF frequency error
BC_REG_RSSI, // 0x0f Received signal strength indicator
BC_REG_MSK0, // 0x10 FM and RDS IRQ mask register
BC_REG_MSK1, // 0x11 FM and RDS IRQ mask register
BC_REG_FLG0, // 0x12 FM and RDS flag register
BC_REG_FLG1, // 0x13 FM and RDS flag register
BC_REG_RDS_WLINE, // 0x14 FIFO water line set level
BC_REG_RDS_BLKB_MATCH0, // 0x16 Block B match pattern
BC_REG_RDS_BLKB_MATCH1, // 0x17 Block B match pattern
BC_REG_RDS_BLKB_MASK0, // 0x18 Block B mask pattern
BC_REG_RDS_BLKB_MASK1, // 0x19 Block B mask pattern
BC_REG_RDS_PI_MATCH0, // 0x1a PI match pattern
BC_REG_RDS_PI_MATCH1, // 0x1b PI match pattern
BC_REG_RDS_PI_MASK0, // 0x1c PI mask pattern
BC_REG_RDS_PI_MASK1, // 0x1d PI mask pattern
BC_REG_BOOT, // 0x1e FM_BOOT register
BC_REG_TEST, // 0x1f FM_TEST register
BC_REG_SPARE0, // 0x20 Spare register #0
BC_REG_SPARE1, // 0x21 Spare register #1
// 0x21 - 0x26 Reserved
// 0x27 ??
BC_REG_REV_ID = 0x28, // 0x28 Revision ID of the FM demodulation core 0xff BCM2048_I2C_FM_RDS_REV
BC_REG_SLAVE_CONF, // 0x29 Enable/disable I2C slave. Configure I2C slave address
// 0x2a - 0x4c Reserved
BC_REG_PCM_ROUTE = 0x4d, // 0x4d Controls routing of FM audio output to either PCM or Bluetooth SCO 0x44 or 0x40 on power-up
// 0x4e - 0x7f Reserved
BC_REG_RDS_DATA = 0x80, // 0x80 Read RDS tuples(3 bytes each)
// 0x81 - 0x8f Reserved
BC_REG_BEST_TUNE = 0x90, // 0x90 Best tune mode enable/disable for AF jump
// 0x91-0xfb Reserved
BC_REG_SRCH_METH = 0xfc, // 0xfc Select search methods: normal, preset, RSSI monitoring
BC_REG_SRCH_STEPS, // 0xfd Adjust search steps in units of 1kHz to 100kHz
BC_REG_MAX_PRESET, // 0xfe Sets the maximum number of preset channels found for FM scan command
BC_REG_PRESET_STATION, // 0xff Read the number of preset stations returned after a FM scan command
};