
On Mon, Sep 10, 2018 at 6:40 AM Jean-Jacques Hiblot jjhiblot@ti.com wrote:
Hi Adam,
On 09/09/2018 14:19, Adam Ford wrote:
I was having some issues with a DM3730 properly reading the card detect on GPIO 127 and attributed it to being related to the pbias register. I have since submitted a patch to enable GPIO_127, but I am not the best approach.
On the HSMMC driver, there are explicit commands to Disable extended drain IO before changing PBIAS, because the MMC driver needs to enable the PBIAS to make the MMC/SD interface operate correctly.
I also submitted a patch to enable pbias driver found in power/regulator/pbias_regulator.c to work on omap3 boards by adding the 'compatible' options. I have been able to test that the pbias driver and it appears to have been setup to work on the omap3, but I have only tried to read the pbias values, I haven't tried to set the pbias values with it.
Two questions:
What I was wondering is if there is some method to get the PBIAS driver to set the PBIAS instead of having the HSMMC driver do it. It seems like one should be able to do this in the device tree, but it's not clear on how.
I believe that the PBIAs must be configured by the HSMMC driver for 2 reasons:
- PBIAS is used by HSMMC only.
- PBIAS must be updated when the MMC IO voltage is changed (see
omap_hsmmc_set_io_regulator())
That function looks like it's contained in a set of #ifdef's which may or may not be enabled. I think it makes sense to enable it, but I also noticed that mmc_board_init() is manipulating the pbias settings. Do you think this is OK, or do you think we should remove the pbias references from here and only use them from omap_hsmmc_set_io_regulator()?
The pbias driver does not seem to have the same checks for disabling the extended drain IO before changing the PBIAS which seems to be required per the DM3730 technical reference manual. Would it make sense to do this in here, or is it just better to leave it in the MMC Driver?
IMO It would make sense to do it in the PBIAS driver as it is strongly advised to toggle both at the same time.
I don't know the details of the other OMAP/Sitara SoC's, but currently, there is an ifdef for the OMAP36XX inside mmc_board_init which disables and enables the IO when toggling. Are there other SoC's that should be included and if so, do they use the same registers? I am basically trying to determine if the #ifdef for the OMAP36XX is necessary or if it should always be included.
adam
JJ
adam