well anyway, i'll be damned three ways in the coldest of the vendor hells. the SFDP is exactly right. you can enter the 4-byte addressing mode... but you can never leave
why on earth would anybody build a system like this? if not for JESD216B's explicit provision for this... situation, i would have assumed that it's just a feature that escaped its chicken bit and it's not in the datasheet for a reason.
but it's in SFDP. someone has intentionally went and set those bits in those exact pattern. presumably the same people who chose to only put a half of a mode switch instruction pair in. why???
>>> await m25q_iface.qspi.execute_read(m25q_iface.cmds[nor.Command.ReadData], address=0, length=16)
memoryview(b'\xff\xff\xbd\xb3\xff\xff\xff\xff;\x00\x00\x00\xe2\x00\x00\x00')
>>> await m25q_iface.qspi.execute_cmd(m25q_iface.cmds[nor.Command.Enter4ByteMode])
None
>>> await m25q_iface.qspi.execute_read(m25q_iface.cmds[nor.Command.ReadData], address=0, length=16)
memoryview(b'\xff\xff\xff\xbd\xb3\xff\xff\xff\xff;\x00\x00\x00\xe2\x00\x00')
>>> await m25q_iface.qspi.execute_cmd(nor.Instruction.spi_1_0_0(0xE9))
None
>>> await m25q_iface.qspi.execute_read(m25q_iface.cmds[nor.Command.ReadData], address=0, length=16)
memoryview(b'\xff\xff\xff\xbd\xb3\xff\xff\xff\xff;\x00\x00\x00\xe2\x00\x00')
>>>