[Letux-kernel] omap-gpmc gta04 regression 4.7-rc1

Roger Quadros rogerq at ti.com
Wed Jun 15 08:59:39 CEST 2016


On 14/06/16 23:10, H. Nikolaus Schaller wrote:
> Hi,
> 
>> Am 14.06.2016 um 20:17 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>
>> Hi Roger,
>>
>>> Am 08.06.2016 um 12:05 schrieb Roger Quadros <rogerq at ti.com>:
>>>
>>
>>>
>>> one at https://github.com/goldelico/gta04-kernel/blob/letux-4.7-rc1/arch/arm/boot/dts/omap3-gta04.dtsi#L602
>>> &gpmc {
>>> 	ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */
>>>
>>> 	nand at 0,0 {
>>> 		compatible = "ti,omap2-nand";
>>> 		reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
>>>
>>> and again at https://github.com/goldelico/gta04-kernel/blob/letux-4.7-rc1/arch/arm/boot/dts/omap3-gta04.dtsi#L1122
>>
>> Therefore we merge on top of linus/master a private patch which - for simplicity (it is very difficult to track changes
>> in the middle of a DT) it appends a second &gmpc node and relies on the DTC to do what should have been (will
>> have been) merged in source code.
>>
>> Without these patches (introduced on our private kernel in 3.19) NAND did not work.
>>
>>> &gpmc {
>>> 	ranges = <0 0 0x30000000 0x04>; /* CS0: NAND */
>>>
>>> 	nand at 0,0 {
>>> 		reg = <0 0 0>; /* CS0, offset 0 */
>>> 		ti,nand-ecc-opt = "sw"; /* stay compatible with our old u-boot (does not support bch8) */
>>>
>>> 		kernel at 280000 {
>>> 			reg = <0x280000 0x600000>;
>>> 		};
>>>
>>> 		filesystem at a80000 {
>>> 			reg = <0x880000 0>;     /* 0 = MTDPART_SIZ_FULL */
>>> 		};
>>> 	};
>>> };
>>>
>>>
>>> In the latter part ranges and reg property is wrong. Just get rid of it.
>>
>> No, they work on our setup. The original ranges / reg setting did not work.
> 
> I have found what went wrong.
> 
> There was upstream commit e2c5eb78a3cc9b0d69ae924c33da50a4cd6d1fa4 which
> did fix these ranges, but we didn't get really aware of this change.
> 
> Almost at the same time we rearranged the device tree file as described - starting with
> our local copy which we thought to be correct.
> 
> During rearrangement we found a discrepancy between what we had been working on
> before and what we did find in linux/master. So we did falsely assume that we were right
> and not linus/master and need to upstream this diff later on (which never happened). Hence
> the diff was added to the second &gpmc node starting to make problems in 4.7-rc1.
> 
> So you are right that we should try to get rid of the ranges / reg modification, if it passes tests.
> And hopefully the gpio problem disappears with this.

There are two separate issues.
1) GPIO-irqchip failing on an unrelated GPIO due to a bug in gpio irqchip code. This triggers
when the GPMC CS resource allocation fails.
This is fixed in v4.7-rc3 with the below 2 commits
http://git.kernel.org/cgit/linux/kernel/git/linusw/linux-gpio.git/commit/?h=fixes&id=11f33a6d15bfa397867ac0d7f3481b6dd683286f
http://git.kernel.org/cgit/linux/kernel/git/linusw/linux-gpio.git/commit/?h=fixes&id=f4833b8cc7edab57d3f3033e549111a546c2e02b

2) GPMC CS resource failing
This is because of the invalid ranges property. This must be fixed in your local patches.

--
cheers,
-roger


More information about the Letux-kernel mailing list