[pasemi] Internal CompactFlash (CF) card device not recognised after the powerpc-4.8-1 merge

Christian Zigotzky chzigotzky at xenosoft.de
Fri Aug 12 22:26:26 AEST 2016


Hi All,

I compiled the RC1 of kernel 4.8 with Olof's CompactFlash driver for PA 
Semi Electra boards today. Unfortunately this driver doesn't detect our 
CF device.

dmesg | grep -i pasemi

[    0.000000] mpic: Setting up MPIC "PASEMI-OPIC" version 1.3 at 
fc000000, max 2 CPUs
[    2.937676] pasemi_mac 0000:00:15.0: no mac address in device tree, 
not configuring
[    4.288347] [c00000026d127680] [c000000000816cdc] 
.pasemi_smb_probe+0x12c/0x188
[    4.288399] [c00000026d127bb0] [c000000001560198] 
.pasemi_smb_driver_init+0x24/0x38
[    4.288455] i2c-pasemi: probe of 0000:00:1c.0 failed with error -16
[    4.288596] [c00000026d127680] [c000000000816cdc] 
.pasemi_smb_probe+0x12c/0x188
[    4.288645] [c00000026d127bb0] [c000000001560198] 
.pasemi_smb_driver_init+0x24/0x38
[    4.288695] i2c-pasemi: probe of 0000:00:1c.1 failed with error -16
[    4.288834] [c00000026d127680] [c000000000816cdc] 
.pasemi_smb_probe+0x12c/0x188
[    4.288883] [c00000026d127bb0] [c000000001560198] 
.pasemi_smb_driver_init+0x24/0x38
[    4.288933] i2c-pasemi: probe of 0000:00:1c.2 failed with error -16
[    4.289745] EDAC MC0: Giving out device to module pasemi_edac 
controller pasemi,pwrficient-mc: DEV 0000:00:04.0 (POLLED)
[    4.290425] EDAC MC1: Giving out device to module pasemi_edac 
controller pasemi,pwrficient-mc: DEV 0000:00:05.0 (POLLED)
[   33.061617] pasemi_mac 0000:00:14.3: PHY init failed: -19.
[   33.061622] pasemi_mac 0000:00:14.3: Defaulting to 1Gbit full duplex

dmesg | grep -i ata

[    0.000000] Memory: 8072880K/8388608K available (11312K kernel code, 
2116K rwdata, 10256K rodata, 860K init, 1813K bss, 315728K reserved, 0K 
cma-reserved)
[    0.157114] pci 0000:05:12.0: calling .quirk_no_ata_d3+0x0/0x30
[    0.157217] pci 0000:05:12.0: set SATA to AHCI mode
[    0.158892] pci 0000:05:14.1: calling .quirk_no_ata_d3+0x0/0x30
[    0.411908] libata version 3.00 loaded.
[    2.917640] ahci 0000:05:12.0: AHCI 0001.0100 32 slots 4 ports 3 Gbps 
0xf impl SATA mode
[    2.920704] ata1: SATA max UDMA/133 abar m1024 at 0xa0209400 port 
0xa0209500 irq 9
[    2.921186] ata2: SATA max UDMA/133 abar m1024 at 0xa0209400 port 
0xa0209580 irq 9
[    2.921657] ata3: SATA max UDMA/133 abar m1024 at 0xa0209400 port 
0xa0209600 irq 9
[    2.922137] ata4: SATA max UDMA/133 abar m1024 at 0xa0209400 port 
0xa0209680 irq 9
[    2.923384] scsi host4: pata_atiixp
[    2.923722] scsi host5: pata_atiixp
[    2.923998] ata5: PATA max UDMA/100 cmd 0x1030 ctl 0x1054 bmdma 
0x1000 irq 9
[    2.924453] ata6: DUMMY
[    3.232241] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    3.232308] ata2: SATA link down (SStatus 0 SControl 300)
[    3.232351] ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    3.232384] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    3.252058] ata3.00: ATAPI: HL-DT-ST DVDRAM GH22NS50, TN01, max UDMA/100
[    3.252064] ata3.00: SB600 AHCI: limiting to 255 sectors per cmd
[    3.292581] ata3.00: SB600 AHCI: limiting to 255 sectors per cmd
[    3.292584] ata3.00: configured for UDMA/100
[    3.333404] ata4.00: ATA-8: ESA3SF1240GB, 4.C.V, max UDMA/133
[    3.333408] ata4.00: 468862128 sectors, multi 16: LBA48 NCQ (depth 
31/32), AA
[    3.333415] ata4.00: SB600 AHCI: limiting to 255 sectors per cmd
[    3.433200] ata4.00: SB600 AHCI: limiting to 255 sectors per cmd
[    3.433203] ata4.00: configured for UDMA/133
[    3.844943] ata1.00: ATA-8: ST2000DM001-9YN164, CC4B, max UDMA/133
[    3.844947] ata1.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 
31/32), AA
[    3.844955] ata1.00: SB600 AHCI: limiting to 255 sectors per cmd
[    3.903500] ata1.00: SB600 AHCI: limiting to 255 sectors per cmd
[    3.903504] ata1.00: configured for UDMA/133
[    3.926117] scsi 0:0:0:0: Direct-Access     ATA ST2000DM001-9YN1 CC4B 
PQ: 0 ANSI: 5
[    4.363105] scsi 3:0:0:0: Direct-Access     ATA ESA3SF1240GB     V    
PQ: 0 ANSI: 5
[   10.432400] EXT4-fs (sda4): mounted filesystem with ordered data 
mode. Opts: (null)

Please help us.

Cheers,

Christian


On 12 August 2016 at 11:20 AM, Christian Zigotzky wrote:
> I meant, I reverted the setup.c.
>
> - Christian
>
> On 12 August 2016 at 11:00 AM, Christian Zigotzky wrote:
>> Hi All,
>>
>> I reverted the commit 
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/diff/arch/powerpc/platforms/pasemi/setup.c?id=bad60e6f259a01cf9f29a1ef8d435ab6c60b2de9. 
>> It boots but it doesn't find any partitions.
>>
>> Cheers,
>>
>> Christian
>>
>> On 11 August 2016 at 5:03 PM, Christian Zigotzky wrote:
>>> Hi All,
>>>
>>> I was able to patch the RC1 with the Nemo and PHB-numbering patch. 
>>> Additionally I added some printks in the file pata_of_platform.c. I 
>>> wanted to know which values have the following variables:
>>>
>>> ctl_res = io_res;
>>> io_res.start += 0x800;
>>> ctl_res.start = ctl_res.start + 0x80e;
>>> io_res.end = ctl_res.start-1;
>>>
>>> It compiled without any problems but unfortunately I didn't see any 
>>> printk outputs of these variables. The output of pata_of_platform is 
>>> missing too. I see this output in the dmesg of the kernel 4.7 but I 
>>> don't see it in the dmesg of the kernel 4.8.
>>>
>>> I have the feeling, that pata_of_platform doesn't work anymore. 
>>> Maybe this is the reason, why the CF card doesn't work anymore.
>>>
>>> Maybe this is the problem: 
>>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/diff/arch/powerpc/platforms/pasemi/setup.c?id=bad60e6f259a01cf9f29a1ef8d435ab6c60b2de9
>>>
>>> Do you have any hints for me?
>>>
>>> Cheers,
>>>
>>> Christian
>>>
>>> On 05 August 2016 at 11:42 PM, Darren Stevens wrote:
>>>> Hello Nicholas
>>>>
>>>> On 06/08/2016, Nicholas Piggin wrote:
>>>>>
>>>>> Hi Christian,
>>>> On 05 August 2016 at 1:41 PM, Christian Zigotzky wrote:
>>>>
>>>> Hi All,
>>>>
>>>>
>>>>
>>>> The internal PASEMI CompactFlash (CF) card device doesn't work anymore
>>>> after the powerpc-4.8-1 merge. That means the code for the internal CF
>>>> card device in the Nemo patch doesn't work after the first PowerPC
>>>> merge. The CompactFlash (CF) card slot is wired to the CPU local bus.
>>>> It is typically used to hold the Linux kernel. I know it isn't well to
>>>> use an own patch for that but I think it is a good time to integrate
>>>> the PASEMI internal CompactFlash (CF) card device to the official
>>>> kernel. What do you think? I am not a programmer so I can't integrate
>>>> the source code for the internal CF card device. But maybe you can
>>>> take the patch and integrate it.
>>>>
>>>>
>>>>
>>>> We use the following patch for the kernel 4.7:
>>>>
>>>>
>>>>
>>>>      diff -rupN a/drivers/ata/pata_of_platform.c
>>>> b/drivers/ata/pata_of_platform.c
>>>>
>>>>      --- a/drivers/ata/pata_of_platform.c   2016-08-05
>>>> 09:58:41.410569036 +0200
>>>>
>>>>      +++ b/drivers/ata/pata_of_platform.c   2016-08-05
>>>> 09:59:54.414288884 +0200
>>>>
>>>>      @@ -41,14 +41,36 @@ static int pata_of_platform_probe(struct
>>>>
>>>>             return -EINVAL;
>>>>
>>>>          }
>>>>
>>>>
>>>>
>>>>      -   ret = of_address_to_resource(dn, 1, &ctl_res);
>>>>
>>>>      -   if (ret) {
>>>>
>>>>      -      dev_err(&ofdev->dev, "can't get CTL address from "
>>>>
>>>>      -         "device tree\n");
>>>>
>>>>      -      return -EINVAL;
>>>>
>>>>      +   if (of_device_is_compatible(dn, "electra-ide")) {
>>>>
>>>>      +      /* Altstatus is really at offset 0x3f6 from the primary 
>>>> window
>>>>
>>>>      +       * on electra-ide. Adjust ctl_res and io_res accordingly.
>>>>
>>>>      +       */
>>>>
>>>>      +      ctl_res = io_res;
>>>>
>>>>      +      ctl_res.start = ctl_res.start+0x3f6;
>>>>
>>>>      +      io_res.end = ctl_res.start-1;
>>>>
>>>>      +
>>>>
>>>>      +#ifdef CONFIG_PPC_PASEMI_SB600
>>>>
>>>>      +       } else if (of_device_is_compatible(dn, "electra-cf")) {
>>>>
>>>>      +               /* Task regs are at 0x800, with alt status @ 
>>>> 0x80e
>>>> in the primary window
>>>>
>>>>      +                * on electra-cf. Adjust ctl_res and io_res
>>>> accordingly.
>>>>
>>>>      +                */
>>>>
>>>>      +               ctl_res = io_res;
>>>>
>>>>      +               io_res.start += 0x800;
>>>>
>>>>      +               ctl_res.start = ctl_res.start + 0x80e;
>>>>
>>>>      +               io_res.end = ctl_res.start-1;
>>>>
>>>>      +#endif
>>>>
>>>>      +   } else {
>>>>
>>>>      +      ret = of_address_to_resource(dn, 1, &ctl_res);
>>>>
>>>>      +      if (ret) {
>>>>
>>>>      +         dev_err(&ofdev->dev, "can't get CTL address from "
>>>>
>>>>      +            "device tree\n");
>>>>
>>>>      +         return -EINVAL;
>>>>
>>>>      +      }
>>>>
>>>>          }
>>>>
>>>>
>>>>
>>>>          irq_res = platform_get_resource(ofdev, IORESOURCE_IRQ, 0);
>>>>
>>>>      +   if (irq_res)
>>>>
>>>>      +      irq_res->flags = 0;
>>>>
>>>>
>>>>
>>>>          prop = of_get_property(dn, "reg-shift", NULL);
>>>>
>>>>          if (prop)
>>>>
>>>>      @@ -65,6 +87,11 @@ static int pata_of_platform_probe(struct
>>>>
>>>>             dev_info(&ofdev->dev, "pio-mode unspecified, assuming
>>>> PIO0\n");
>>>>
>>>>          }
>>>>
>>>>
>>>>
>>>>      +#ifdef CONFIG_PPC_PASEMI_SB600
>>>>
>>>>      +       irq_res = 0;                    // force irq off (doesn't
>>>> seem to work)
>>>>
>>>>      +#endif
>>>>
>>>>      +
>>>>
>>>>      +
>>>>
>>>>          pio_mask = 1 << pio_mode;
>>>>
>>>>          pio_mask |= (1 << pio_mode) - 1;
>>>>
>>>>
>>>>
>>>>      @@ -74,7 +101,11 @@ static int pata_of_platform_probe(struct
>>>>
>>>>
>>>>
>>>>       static struct of_device_id pata_of_platform_match[] = {
>>>>
>>>>          { .compatible = "ata-generic", },
>>>>
>>>>      -   { },
>>>>
>>>>      +   { .compatible = "electra-ide", },
>>>>
>>>>      +#ifdef CONFIG_PPC_PASEMI_SB600
>>>>
>>>>      +       { .compatible = "electra-cf",},
>>>>
>>>>      +#endif
>>>>
>>>>      +   {},
>>>>
>>>>       };
>>>>
>>>>       MODULE_DEVICE_TABLE(of, pata_of_platform_match);
>>>>
>>>>
>>>>
>>>> dmesg with the kernel 4.7:
>>>>
>>>>
>>>>
>>>> zcat /var/log/dmesg.1.gz | grep -i ata7
>>>>
>>>>
>>>>
>>>>      [    2.939788] ata7: PATA max PIO0 no IRQ, using PIO polling mmio
>>>> cmd 0xf0000800 ctl 0xf000080e
>>>>
>>>>      [    3.099186] ata7.00: CFA: SanDisk SDCFB-256, HDX 2.33, max 
>>>> PIO4
>>>>
>>>>      [    3.099191] ata7.00: 501760 sectors, multi 0: LBA
>>>>
>>>>      [    3.099199] ata7.00: configured for PIO
>>>>
>>>>
>>>>
>>>> The dmesg of the latest Git kernel doesn't have any output of our
>>>> internal CF card device.
>>>>
>>>>
>>>>
>>>> Could you please integrate our PASEMI CF card device again?
>>>>
>>>>
>>>>
>>>> Thanks,
>>>>
>>>>
>>>>
>>>> Christian
>>>>
>>>>
>>>>
>>>>> As for your driver support, it would indeed be a good idea to
>>>>> get it supported in the upstream kernel. You should post a
>>>>> new mail about that. Take a look at these 3 commits:
>>>>>
>>>>> 61f7162117d4767875825abf2f6ed1eeebbcceed
>>>>> 9cd55be4d22376893d2818ce3c0e5706a3d74121
>>>>> ca99140a63b7326ee9a38f64c326317f2c63b594
>>>>>
>>>>> Your patch comes from code based on the second one. The last
>>>>> commit removed it, and says that it is not the best way to
>>>>> implement it. You could cc this list and some of the people
>>>>> involved with those commits and ask ask for advice about
>>>>> getting your driver supported.
>>>> Actually, it's almost supported by the base PASemi code anyway, 
>>>> there is a
>>>> PCMCIA driver in setup.c, but our hardware has been changed enough 
>>>> to make it
>>>> hang the system when used. I should probably take another look and 
>>>> see If I
>>>> can fix that. The other option would be to move the above patch to 
>>>> where we
>>>> add our rtc platform device. One thing that does confuse me is the 
>>>> interrupt,
>>>> it's attached to GPIO 0, so should be on the mpic int 0 (or maybe 
>>>> 16?)but I
>>>> could never get it to work.
>>>>
>>>> Regards
>>>> Darren
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>



More information about the Linuxppc-dev mailing list