[U-Boot] [PATCH] Fix problems in chip select selection in imx23, 28 spi code

Jagan Teki jagannadh.teki at gmail.com
Wed Jan 8 11:37:51 CET 2014


On Sat, Dec 21, 2013 at 12:42 AM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
> On Fri, Oct 4, 2013 at 4:06 PM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>> Hi,
>>
>> Try to fix the above issues.
>> Use u-boot-spi.git repo with master-probe branch.
>> Please test the same on your hw and let me know for any issues.
>>
>> On Tue, Aug 27, 2013 at 6:54 PM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>>> On Tue, Aug 27, 2013 at 2:40 PM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>>>> Hi,
>>>>
>>>> On Tue, Aug 27, 2013 at 4:11 AM, Asok Subramanian <asok at vyassoft.com> wrote:
>>>>>  Fix problems in chip select selection in imx23,28 spi code
>>>>>
>>>>> The spi function code for imx23,28 currently does not work for chip select
>>>>> other than 0.
>>>>> This is because the register HW_SSP_CTRL0 is first  reset and the code does
>>>>> not load the CS bits
>>>>> again into HW_SSP_CTRL0 after the reset. The proposed fix reloads the CS
>>>>> bits after the reset.
>>>>>
>>>>> Signed-off-by: Asok Subramanian <asok at vyassoft.com>
>>>>> ---
>>>>>  drivers/spi/mxs_spi.c |    4 +++-
>>>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/spi/mxs_spi.c b/drivers/spi/mxs_spi.c
>>>>> index 3cf7142..15681dc 100644
>>>>> --- a/drivers/spi/mxs_spi.c
>>>>> +++ b/drivers/spi/mxs_spi.c
>>>>> @@ -32,6 +32,7 @@ struct mxs_spi_slave {
>>>>>      uint32_t        max_khz;
>>>>>      uint32_t        mode;
>>>>>      struct mxs_ssp_regs    *regs;
>>>>> +    unsigned int            cs;
>>>>>  };
>>>>>
>>>>>  static inline struct mxs_spi_slave *to_mxs_slave(struct spi_slave *slave)
>>>>> @@ -74,6 +75,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus,
>>>>> unsigned int cs,
>>>>>      mxs_slave->max_khz = max_hz / 1000;
>>>>>      mxs_slave->mode = mode;
>>>>>      mxs_slave->regs = mxs_ssp_regs_by_bus(bus);
>>>>> +    mxs_slave->cs = cs;
>>>>>      ssp_regs = mxs_slave->regs;
>>>>>
>>>>>      reg = readl(&ssp_regs->hw_ssp_ctrl0);
>>>>> @@ -102,7 +104,7 @@ int spi_claim_bus(struct spi_slave *slave)
>>>>>
>>>>>      mxs_reset_block(&ssp_regs->hw_ssp_ctrl0_reg);
>>>>>
>>>>> -    writel(SSP_CTRL0_BUS_WIDTH_ONE_BIT, &ssp_regs->hw_ssp_ctrl0);
>>>>> +    writel(SSP_CTRL0_BUS_WIDTH_ONE_BIT | (mxs_slave->cs) <<
>>>>> MXS_SSP_CHIPSELECT_SHIFT, &ssp_regs->hw_ssp_ctrl0);
>>>>>
>>>>>      reg = SSP_CTRL1_SSP_MODE_SPI | SSP_CTRL1_WORD_LENGTH_EIGHT_BITS;
>>>>>      reg |= (mxs_slave->mode & SPI_CPOL) ? SSP_CTRL1_POLARITY : 0;
>>>>> --
>>>>> 1.7.9.5
>>>>
>>>> Please use the proper commit head.
>>>> Fix problems in chip select selection in imx23,28 spi code
>>>> spi: mxs_spi: <EDIT THE TEXT>
>>>
>>> And also please fix the check-patch errors:
>>>
>>> ERROR: Unrecognized email address: 'Asok Subramanian <asok at vyassoft.com>'
>>> #18:
>>> Signed-off-by: Asok Subramanian <asok at vyassoft.com>
>>>
>>> ERROR: patch seems to be corrupt (line wrapped?)
>>> #29: FILE: drivers/spi/mxs_spi.c:31:
>>>      uint32_t        max_khz;
>>>
>>> WARNING: line over 80 characters
>>> #49: FILE: drivers/spi/mxs_spi.c:104:
>>> +    writel(SSP_CTRL0_BUS_WIDTH_ONE_BIT | (mxs_slave->cs) <<
>>> MXS_SSP_CHIPSELECT_SHIFT, &ssp_regs->hw_ssp_ctrl0);
>>>
>>> total: 2 errors, 1 warnings, 22 lines checked
> Ping.

Ping.!

-- 
Thanks,
Jagan.


More information about the U-Boot mailing list