Re: [PATCH 04/12] ARM: pxa: stargate2: Constify the software node

2021-04-10 Thread Robert Jarzmik
Wolfram Sang  writes:

> On Mon, Mar 29, 2021 at 01:50:39PM +0300, Heikki Krogerus wrote:
>> Additional device properties are always just a part of a
>> software fwnode. If the device properties are constant, the
>> software node can also be constant.
>> 
>> Signed-off-by: Heikki Krogerus 
>> Cc: Jonathan Cameron 
>> Cc: Daniel Mack 
>> Cc: Haojian Zhuang 
>> Cc: Robert Jarzmik 
>
> I like to apply it soon. Can we get an ack, please?
Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


Re: [PATCH] ARM: pxa: mainstone: avoid -Woverride-init warning

2021-04-10 Thread Robert Jarzmik
Arnd Bergmann  writes:

> From: Arnd Bergmann 
>
> On Tue, 23 Mar 2021 14:08:27 +0100, Arnd Bergmann wrote:
>> The default initializer at the start of the array causes a warning
>> when building with W=1:
>> 
>> In file included from arch/arm/mach-pxa/mainstone.c:47:
>> arch/arm/mach-pxa/mainstone.h:124:33: error: initialized field overwritten 
>> [-Werror=override-init]
>>   124 | #define MAINSTONE_IRQ(x)(MAINSTONE_NR_IRQS + (x))
>>   | ^
>> arch/arm/mach-pxa/mainstone.h:133:33: note: in expansion of macro 
>> 'MAINSTONE_IRQ'
>>   133 | #define MAINSTONE_S0_CD_IRQ MAINSTONE_IRQ(9)
>>   | ^
>> arch/arm/mach-pxa/mainstone.c:506:15: note: in expansion of macro 
>> 'MAINSTONE_S0_CD_IRQ'
>>   506 | [5] = MAINSTONE_S0_CD_IRQ,
>>   |       ^~~
>> 
>> [...]
>
> Applied to arm/fixes.
Too late, but ...
Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


Re: [PATCH 06/32] usb: gadget: udc: pxa27x_udc: Fix a bunch of kerneldoc issues

2020-07-08 Thread Robert Jarzmik
Lee Jones  writes:

> Mostly bitrotted argument descriptions/names.  Also the removal
> of a blank line in the middle of a kerneldoc header, which is
> not allowed.
>
> Fixes the following W=1 kernel build warning(s):
>
>  drivers/usb/gadget/udc/pxa27x_udc.c:398: warning: Function parameter or 
> member 'ep' not described in 'ep_write_UDCCSR'
>  drivers/usb/gadget/udc/pxa27x_udc.c:398: warning: Excess function parameter 
> 'udc' description in 'ep_write_UDCCSR'
>  drivers/usb/gadget/udc/pxa27x_udc.c:479: warning: Function parameter or 
> member 'udc' not described in 'set_ep0state'
>  drivers/usb/gadget/udc/pxa27x_udc.c:479: warning: Excess function parameter 
> 'dev' description in 'set_ep0state'
>  drivers/usb/gadget/udc/pxa27x_udc.c:506: warning: Excess function parameter 
> 'req' description in 'inc_ep_stats_reqs'
>  drivers/usb/gadget/udc/pxa27x_udc.c:1476: warning: bad line:
>  drivers/usb/gadget/udc/pxa27x_udc.c:1697: warning: Function parameter or 
> member 'udc' not described in 'udc_enable'
>  drivers/usb/gadget/udc/pxa27x_udc.c:1697: warning: Excess function parameter 
> 'dev' description in 'udc_enable'
>  drivers/usb/gadget/udc/pxa27x_udc.c:1750: warning: Function parameter or 
> member 'g' not described in 'pxa27x_udc_start'
>  drivers/usb/gadget/udc/pxa27x_udc.c:1750: warning: Excess function parameter 
> 'bind' description in 'pxa27x_udc_start'
>  drivers/usb/gadget/udc/pxa27x_udc.c:1784: warning: Excess function parameter 
> 'driver' description in 'stop_activity'
>  drivers/usb/gadget/udc/pxa27x_udc.c:1800: warning: Function parameter or 
> member 'g' not described in 'pxa27x_udc_stop'
>  drivers/usb/gadget/udc/pxa27x_udc.c:1800: warning: Excess function parameter 
> 'driver' description in 'pxa27x_udc_stop'
>  drivers/usb/gadget/udc/pxa27x_udc.c:2358: warning: Function parameter or 
> member 'pdev' not described in 'pxa_udc_probe'
>  drivers/usb/gadget/udc/pxa27x_udc.c:2358: warning: Excess function parameter 
> '_dev' description in 'pxa_udc_probe'
>
> Cc: Daniel Mack 
> Cc: Haojian Zhuang 
> Cc: Robert Jarzmik 
> Cc: Felipe Balbi 
> Signed-off-by: Lee Jones 
Acked-by: Robert Jarzmik 

Cheers.

--
Robert


Re: [PATCH] pinctrl: pxa: pxa2xx: Remove 'pxa2xx_pinctrl_exit()' which is unused and broken

2020-06-01 Thread Robert Jarzmik
Christophe JAILLET  writes:

> Commit 6d33ee7a0534 ("pinctrl: pxa: Use devm_pinctrl_register() for pinctrl 
> registration")
> has turned a 'pinctrl_register()' into 'devm_pinctrl_register()' in
> 'pxa2xx_pinctrl_init()'.
> However, the corresponding 'pinctrl_unregister()' call in
> 'pxa2xx_pinctrl_exit()' has not been removed.
>
> This is not an issue, because 'pxa2xx_pinctrl_exit()' is unused.
> Remove it now to avoid some wondering in the future and save a few LoC.
>
> Signed-off-by: Christophe JAILLET 
Acked-by: Robert Jarzmik 

Would be even a better patch with a :
Fixes: 6d33ee7a0534 ("pinctrl: pxa: Use devm_pinctrl_register() for pinctrl 
registration")

Cheers.

--
Robert


Re: [PATCH 2/3] gpio: pxa: Fix return value of pxa_gpio_probe()

2020-05-27 Thread Robert Jarzmik
Tiezhu Yang  writes:

> On 05/23/2020 03:07 AM, Robert Jarzmik wrote:
>> Tiezhu Yang  writes:
>>
>>> When call function devm_platform_ioremap_resource(), we should use IS_ERR()
>>> to check the return value and return PTR_ERR() if failed.
>>>
>>> Fixes: 542c25b7a209 ("drivers: gpio: pxa: use 
>>> devm_platform_ioremap_resource()")
>>> Signed-off-by: Tiezhu Yang 
>>> ---
>>>   drivers/gpio/gpio-pxa.c | 4 ++--
>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
>>> index 1361270..0cb6600 100644
>>> --- a/drivers/gpio/gpio-pxa.c
>>> +++ b/drivers/gpio/gpio-pxa.c
>>> @@ -660,8 +660,8 @@ static int pxa_gpio_probe(struct platform_device *pdev)
>>> pchip->irq1 = irq1;
>>> gpio_reg_base = devm_platform_ioremap_resource(pdev, 0);
>>> -   if (!gpio_reg_base)
>>> -   return -EINVAL;
>>> +   if (IS_ERR(gpio_reg_base))
>>> +   return PTR_ERR(gpio_reg_base);
>> As far as I know, devm_platform_ioremap_resource() could return NULL which is
>> not handled by this test (unless __devm_ioremap() semantics changed since I 
>> had
>> a look).
>
> Hi Robert,
>
> In the function __devm_ioremap_resource(), if __devm_ioremap returns NULL,
> it will return IOMEM_ERR_PTR(-ENOMEM).
>
> devm_platform_ioremap_resource()
> devm_ioremap_resource()
> __devm_ioremap_resource()
>__devm_ioremap()
>
> static void __iomem *
> __devm_ioremap_resource(struct device *dev, const struct resource *res,
> enum devm_ioremap_type type)
> {
> ...
> dest_ptr = __devm_ioremap(dev, res->start, size, type);
> if (!dest_ptr) {
> dev_err(dev, "ioremap failed for resource %pR\n", res);
> devm_release_mem_region(dev, res->start, size);
> dest_ptr = IOMEM_ERR_PTR(-ENOMEM);
> }
>
> return dest_ptr;
> }
>
> And also, we can see the comment of devm_ioremap_resource():
>
> Usage example:
>
> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> base = devm_ioremap_resource(>dev, res);
> if (IS_ERR(base))
> return PTR_ERR(base);
>
>>
>> Therefore, this patch is incorrect, or rather incomplete.
>
> So I think this patch is correct, do I miss something?
You're right, my bad, didn't see the test in __devm_ioremap_resource().

Cheers.

-- 
Robert


Re: [PATCH 2/3] gpio: pxa: Fix return value of pxa_gpio_probe()

2020-05-22 Thread Robert Jarzmik
Tiezhu Yang  writes:

> When call function devm_platform_ioremap_resource(), we should use IS_ERR()
> to check the return value and return PTR_ERR() if failed.
>
> Fixes: 542c25b7a209 ("drivers: gpio: pxa: use 
> devm_platform_ioremap_resource()")
> Signed-off-by: Tiezhu Yang 
> ---
>  drivers/gpio/gpio-pxa.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
> index 1361270..0cb6600 100644
> --- a/drivers/gpio/gpio-pxa.c
> +++ b/drivers/gpio/gpio-pxa.c
> @@ -660,8 +660,8 @@ static int pxa_gpio_probe(struct platform_device *pdev)
>   pchip->irq1 = irq1;
>  
>   gpio_reg_base = devm_platform_ioremap_resource(pdev, 0);
> - if (!gpio_reg_base)
> - return -EINVAL;
> + if (IS_ERR(gpio_reg_base))
> + return PTR_ERR(gpio_reg_base);
As far as I know, devm_platform_ioremap_resource() could return NULL which is
not handled by this test (unless __devm_ioremap() semantics changed since I had
a look).

Therefore, this patch is incorrect, or rather incomplete.

Cheers.

-- 
Robert


[PATCH v3 2/3] MAINTAINERS: pxa: remove Compulab arm/pxa support

2020-05-21 Thread Robert Jarzmik
These boards support is removed from the kernel, so remove the
MAINTAINERS entry for them.

Signed-off-by: Robert Jarzmik 
Acked-by: Mike Rapoport 
Acked-by: Arnd Bergmann 
---
 MAINTAINERS | 5 -
 1 file changed, 5 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 091ec22c1a23..ad58388fa822 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1684,11 +1684,6 @@ S:   Maintained
 T: git git://git.armlinux.org.uk/~rmk/linux-arm.git clkdev
 F: drivers/clk/clkdev.c
 
-ARM/COMPULAB CM-X270/EM-X270 and CM-X300 MACHINE SUPPORT
-M: Mike Rapoport 
-L: linux-arm-ker...@lists.infradead.org (moderated for non-subscribers)
-S: Maintained
-
 ARM/CONEXANT DIGICOLOR MACHINE SUPPORT
 M: Baruch Siach 
 L: linux-arm-ker...@lists.infradead.org (moderated for non-subscribers)
-- 
2.26.2



[PATCH v3 3/3] ASoC: pxa: remove Compulab pxa2xx boards

2020-05-21 Thread Robert Jarzmik
As these boards have been removed from the pxa tree, amend accordingly
the sound subsystem.

Signed-off-by: Robert Jarzmik 
Acked-by: Mike Rapoport 
Acked-by: Arnd Bergmann 
---
 sound/soc/pxa/Kconfig | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig
index d4c0f580a565..fb2d5ab02b0d 100644
--- a/sound/soc/pxa/Kconfig
+++ b/sound/soc/pxa/Kconfig
@@ -128,9 +128,8 @@ config SND_PXA2XX_SOC_E800
  Toshiba e800 PDA
 
 config SND_PXA2XX_SOC_EM_X270
-   tristate "SoC Audio support for CompuLab EM-x270, eXeda and CM-X300"
-   depends on SND_PXA2XX_SOC && (MACH_EM_X270 || MACH_EXEDA || \
-   MACH_CM_X300)
+   tristate "SoC Audio support for CompuLab CM-X300"
+   depends on SND_PXA2XX_SOC && MACH_CM_X300
depends on AC97_BUS=n
select REGMAP
select AC97_BUS_NEW
-- 
2.26.2



[PATCH v3 1/3] ARM: pxa: remove Compulab pxa2xx boards

2020-05-21 Thread Robert Jarzmik
As these boards have no more users nor testers, and patching them has
become a burden, be that because of the PCI part or the MTD NAND
support, let's remove them.

The cm-x300 will for now remain and represent Compulab boards at its
best in the PXA department.

Signed-off-by: Robert Jarzmik 
Acked-by: Mike Rapoport 
Acked-by: Arnd Bergmann 
---
Since v1: Arnd's comments
Since v2: Acks
---
 arch/arm/configs/cm_x2xx_defconfig  |  173 
 arch/arm/configs/em_x270_defconfig  |  178 
 arch/arm/configs/pxa_defconfig  |2 -
 arch/arm/mach-pxa/Kconfig   |   17 -
 arch/arm/mach-pxa/Makefile  |5 -
 arch/arm/mach-pxa/cm-x255.c |  240 -
 arch/arm/mach-pxa/cm-x270.c |  419 -
 arch/arm/mach-pxa/cm-x2xx-pci.c |  196 
 arch/arm/mach-pxa/cm-x2xx-pci.h |   14 -
 arch/arm/mach-pxa/cm-x2xx.c |  538 ---
 arch/arm/mach-pxa/em-x270.c | 1286 ---
 arch/arm/mach-pxa/include/mach/io.h |   18 -
 12 files changed, 3086 deletions(-)
 delete mode 100644 arch/arm/configs/cm_x2xx_defconfig
 delete mode 100644 arch/arm/configs/em_x270_defconfig
 delete mode 100644 arch/arm/mach-pxa/cm-x255.c
 delete mode 100644 arch/arm/mach-pxa/cm-x270.c
 delete mode 100644 arch/arm/mach-pxa/cm-x2xx-pci.c
 delete mode 100644 arch/arm/mach-pxa/cm-x2xx-pci.h
 delete mode 100644 arch/arm/mach-pxa/cm-x2xx.c
 delete mode 100644 arch/arm/mach-pxa/em-x270.c
 delete mode 100644 arch/arm/mach-pxa/include/mach/io.h

diff --git a/arch/arm/configs/cm_x2xx_defconfig 
b/arch/arm/configs/cm_x2xx_defconfig
deleted file mode 100644
index fa997ae2673e..
--- a/arch/arm/configs/cm_x2xx_defconfig
+++ /dev/null
@@ -1,173 +0,0 @@
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_SYSVIPC=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_SYSFS_DEPRECATED_V2=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_EXPERT=y
-# CONFIG_VM_EVENT_COUNTERS is not set
-# CONFIG_SLUB_DEBUG is not set
-# CONFIG_COMPAT_BRK is not set
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_BLK_DEV_BSG is not set
-CONFIG_ARCH_PXA=y
-CONFIG_MACH_ARMCORE=y
-CONFIG_PCI=y
-CONFIG_PCCARD=m
-CONFIG_YENTA=m
-# CONFIG_YENTA_O2 is not set
-# CONFIG_YENTA_RICOH is not set
-# CONFIG_YENTA_ENE_TUNE is not set
-# CONFIG_YENTA_TOSHIBA is not set
-CONFIG_PCMCIA_PXA2XX=m
-CONFIG_NO_HZ=y
-CONFIG_AEABI=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="root=1f03 mem=32M"
-CONFIG_FPE_NWFPE=y
-CONFIG_PM=y
-CONFIG_APM_EMULATION=m
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_INET_DIAG is not set
-# CONFIG_IPV6 is not set
-CONFIG_BT=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_BNEP=m
-CONFIG_BT_HIDP=m
-CONFIG_LIB80211=m
-CONFIG_FW_LOADER=m
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PXA2XX=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_NAND_GPIO=m
-CONFIG_MTD_NAND_CM_X270=y
-CONFIG_MTD_NAND_PLATFORM=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_ATA=m
-# CONFIG_SATA_PMP is not set
-CONFIG_PATA_PCMCIA=m
-CONFIG_NETDEVICES=y
-CONFIG_NET_ETHERNET=y
-CONFIG_DM9000=y
-CONFIG_DM9000_DEBUGLEVEL=1
-CONFIG_NET_PCI=y
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_INPUT_EVDEV=y
-CONFIG_KEYBOARD_PXA27x=m
-# CONFIG_INPUT_MOUSE is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_UCB1400=m
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_LEGACY_PTY_COUNT=16
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_PXA=y
-CONFIG_SPI=y
-CONFIG_SPI_PXA2XX=m
-# CONFIG_HWMON is not set
-CONFIG_UCB1400_CORE=m
-CONFIG_FB=y
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
-CONFIG_FB_MBX=m
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_LOGO=y
-CONFIG_SOUND=m
-CONFIG_SND=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_DRIVERS is not set
-# CONFIG_SND_PCI is not set
-CONFIG_SND_PXA2XX_AC97=m
-# CONFIG_SND_SPI is not set
-# CONFIG_SND_USB is not set
-# CONFIG_SND_PCMCIA is not set
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
-CONFIG_HID_EZKEY=y
-CONFIG_HID_GYRATION=y
-CONFIG_HID_LOGITECH=y
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_PANTHERLORD=y
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-CONFIG_HID_SUNPLUS=y
-CONFIG_USB=y
-CONFIG_USB_MON=y
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_STORAGE=y
-CONFIG_MMC=m
-CONFIG

Re: [PATCH 00/46] ARM: pxa: towards multiplatform support

2019-10-19 Thread Robert Jarzmik
Arnd Bergmann  writes:

> On Fri, Oct 18, 2019 at 9:17 PM Arnd Bergmann  wrote:
>> On Fri, Oct 18, 2019 at 9:04 PM Robert Jarzmik  
>> wrote:
>> > Arnd Bergmann  writes:
>> >
>> > > Hi PXA maintainers,
>> > >
>> > > I'm in the process of getting the old ARM platforms to all build
>> > > in a single kernel. The largest part of that work is changing all
>> > > the device drivers to no longer require mach/*.h header files.
>> > >
>> > > This series does it for arch/pxa/.
>> > >
>> > > As with the omap1 and s3c24xx series I sent before, I don't
>> > > expect this all to be correct in the first version, though
>> > > a lot of the patches are fairly simple and I did exhaustive
>> > > compile-time testing on them.
>> > >
>> > > Please test if you have the hardware, or review!
>> >
>> > Hi Arnd,
>> >
>> > Would you have a git tree I can pull from ?
>> > That would make my life easier than applying manually 46 patches...
>>
>> I've now pushed it to
>>
>> git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground.git
>> pxa-multiplatform
>
> Sorry for the duplication, I had some problems with email configuration
> so my reply got rejected, let's see if it goes through this time.
I have it now, thanks, I'll test and review as soon as I can.

Cheers.

-- 
Robert


Re: [PATCH 00/46] ARM: pxa: towards multiplatform support

2019-10-18 Thread Robert Jarzmik
Arnd Bergmann  writes:

> Hi PXA maintainers,
>
> I'm in the process of getting the old ARM platforms to all build
> in a single kernel. The largest part of that work is changing all
> the device drivers to no longer require mach/*.h header files.
>
> This series does it for arch/pxa/.
>
> As with the omap1 and s3c24xx series I sent before, I don't
> expect this all to be correct in the first version, though
> a lot of the patches are fairly simple and I did exhaustive
> compile-time testing on them.
>
> Please test if you have the hardware, or review!

Hi Arnd,

Would you have a git tree I can pull from ?
That would make my life easier than applying manually 46 patches...

Cheers.

--
Robert


Re: [PATCH 4/6] dma: pxa_dma: no need to check return value of debugfs_create functions

2019-08-13 Thread Robert Jarzmik
Greg Kroah-Hartman  writes:

> On Sat, Aug 10, 2019 at 09:27:26PM +0200, Robert Jarzmik wrote:
>> Greg Kroah-Hartman  writes:
>> 
>> This is not strictly equivalent.
>> Imagine that the debugfs_create_dir() fails and returns NULL :
> How can that happen?
Well in v5.0-rc1 that could happen ... unfortunately that's also the code I
checked ...

>>  - in the former case, neither "state", "descriptors" nor "requesters" would 
>> be
>>created
>>  - in the new code, "state", "descriptors" nor "requesters" will be created 
>> in
>>the debugfs root directory
>
> I agree, but debugfs_create_dir() does not return a NULL on an error
> since many kernel releases.  Neither can debugfs_create_file() so really
> this test is not working at all as-is :)
Ah yes, you're right, I wasn't aware of the debugfs changes ...

But checking a bit further, your original mail is 2 monthes old, and this patch
was already merged in v5.2. I probably fell in a time-space anomaly, as I
received this mail only a couple of days ago.

Have a nice day.

-- 
Robert


Re: [PATCH 4/6] dma: pxa_dma: no need to check return value of debugfs_create functions

2019-08-10 Thread Robert Jarzmik
Greg Kroah-Hartman  writes:

Hi Greg,

> When calling debugfs functions, there is no need to ever check the
> return value.  The function can work or not, but the code logic should
> never do something different based on this.
>
> Also, because there is no need to save the file dentry, remove the
> variable that was saving it as it was never even being used once set.
>
> Cc: Daniel Mack 
> Cc: Haojian Zhuang 
> Cc: Robert Jarzmik 
> Cc: Vinod Koul 
> Cc: Dan Williams 
> Cc: linux-arm-ker...@lists.infradead.org
> Cc: dmaeng...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Greg Kroah-Hartman 
> ---
>  drivers/dma/pxa_dma.c | 56 +--
>  1 file changed, 11 insertions(+), 45 deletions(-)
>
> diff --git a/drivers/dma/pxa_dma.c b/drivers/dma/pxa_dma.c
> index b429642f3e7a..0f698f49ee26 100644
> --- a/drivers/dma/pxa_dma.c
> +++ b/drivers/dma/pxa_dma.c
> @@ -132,7 +132,6 @@ struct pxad_device {
>   spinlock_t  phy_lock;   /* Phy association */
>  #ifdef CONFIG_DEBUG_FS
>   struct dentry   *dbgfs_root;
> - struct dentry   *dbgfs_state;
>   struct dentry   **dbgfs_chan;
>  #endif
>  };
> @@ -326,31 +325,18 @@ static struct dentry *pxad_dbg_alloc_chan(struct 
> pxad_device *pdev,
>int ch, struct dentry *chandir)
>  {
>   char chan_name[11];
> - struct dentry *chan, *chan_state = NULL, *chan_descr = NULL;
> - struct dentry *chan_reqs = NULL;
> + struct dentry *chan;
>   void *dt;
>  
>   scnprintf(chan_name, sizeof(chan_name), "%d", ch);
>   chan = debugfs_create_dir(chan_name, chandir);
>   dt = (void *)>phys[ch];
>  
> - if (chan)
> - chan_state = debugfs_create_file("state", 0400, chan, dt,
> -  _state_fops);
> - if (chan_state)
> - chan_descr = debugfs_create_file("descriptors", 0400, chan, dt,
> -  _fops);
> - if (chan_descr)
> - chan_reqs = debugfs_create_file("requesters", 0400, chan, dt,
> - _chan_fops);
> - if (!chan_reqs)
> - goto err_state;
> + debugfs_create_file("state", 0400, chan, dt, _state_fops);
> + debugfs_create_file("descriptors", 0400, chan, dt, _fops);
> + debugfs_create_file("requesters", 0400, chan, dt, _chan_fops);

This is not strictly equivalent.
Imagine that the debugfs_create_dir() fails and returns NULL :
 - in the former case, neither "state", "descriptors" nor "requesters" would be
   created
 - in the new code, "state", "descriptors" nor "requesters" will be created in
   the debugfs root directory

Apart from that it looks fine.

Cheers.

-- 
Robert


Re: [PATCH] media: mt9m111: fix fw-node refactoring

2019-06-24 Thread Robert Jarzmik
Sakari Ailus  writes:

> On Thu, Jun 20, 2019 at 01:17:17PM +0300, Sakari Ailus wrote:
>> diff --git a/drivers/media/i2c/mt9m111.c b/drivers/media/i2c/mt9m111.c
>> index bd3a51c3b081..9761a6105407 100644
>> --- a/drivers/media/i2c/mt9m111.c
>> +++ b/drivers/media/i2c/mt9m111.c
>> @@ -1263,9 +1263,11 @@ static int mt9m111_probe(struct i2c_client *client,
>>  if (!mt9m111)
>>  return -ENOMEM;
>>  
>> -ret = mt9m111_probe_fw(client, mt9m111);
>> -if (ret)
>> -return ret;
>> +if (dev_fwnode(client->dev)) {
>
> >dev
>
>> +ret = mt9m111_probe_fw(client, mt9m111);
>> +if (ret)
>> +return ret;
>> +}
>>  
>>  mt9m111->clk = v4l2_clk_get(>dev, "mclk");
>>  if (IS_ERR(mt9m111->clk))

Sure, you can take the patch as yours, or sign off my modified patch, whatever
pleases you.

Cheers.

-- 
Robert


Re: [PATCH 5/6] ARM: pxa: Switch to SPDX header

2019-06-11 Thread Robert Jarzmik
Lubomir Rintel  writes:

> The original license text had a typo ("publishhed") which would be
> likely to confuse automated licensing auditing tools. Let's just switch
> to SPDX instead of fixing the wording.
>
> Signed-off-by: Lubomir Rintel 
Acked-by: Robert Jarzmik 

Cheers.

--
Robert


[PATCH] media: mt9m111: fix fw-node refactoring

2019-06-03 Thread Robert Jarzmik
In the patch refactoring the fw-node, the mt9m111 was broken for all
platform_data based platforms, which were the first aim of this
driver. Only the devicetree platform are still functional, probably
because the testing was done on these.

The result is that -EINVAL is systematically return for such platforms,
what this patch fixes.

Fixes: 98480d65c48c ("media: mt9m111: allow to setup pixclk polarity")
Signed-off-by: Robert Jarzmik 
---
 drivers/media/i2c/mt9m111.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/media/i2c/mt9m111.c b/drivers/media/i2c/mt9m111.c
index 168a5c74f368..d65c23301498 100644
--- a/drivers/media/i2c/mt9m111.c
+++ b/drivers/media/i2c/mt9m111.c
@@ -1209,7 +1209,7 @@ static int mt9m111_probe(struct i2c_client *client,
 {
struct mt9m111 *mt9m111;
struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
-   int ret;
+   int ret = 0;
 
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WORD_DATA)) {
dev_warn(>dev,
@@ -1221,7 +1221,8 @@ static int mt9m111_probe(struct i2c_client *client,
if (!mt9m111)
return -ENOMEM;
 
-   ret = mt9m111_probe_fw(client, mt9m111);
+   if (client->dev.of_node)
+   ret = mt9m111_probe_fw(client, mt9m111);
if (ret)
return ret;
 
-- 
2.20.1



Re: [PATCH] lib: scatterlist: Fix to support no mapped sg

2019-04-19 Thread Robert Jarzmik
Zhou Wang  writes:

> In function sg_split, the second sg_calculate_split will return -EINVAL
> when in_mapped_nents is 0.
>
> Indeed there is no need to do second sg_calculate_split and sg_split_mapped
> when in_mapped_nents is 0, as in_mapped_nents indicates no mapped entry in
> original sgl.
>
> Signed-off-by: Zhou Wang 
That's right. May I know what is the usecase which led you to this fix ?

Acked-by: Robert Jarzmik 

--
Robert


Re: Removing pcap? (EZX support in mainline linux)

2019-04-08 Thread Robert Jarzmik
Arnd Bergmann  writes:

> On Mon, Apr 8, 2019 at 8:58 AM Antonio Ospite  wrote:
>> On Sun, 7 Apr 2019 16:07:41 +0200
>> Alexandre Belloni  wrote:
>> adding Robert to CC as he is listed as the current maintainer of
>> ARM/EZX SMARTPHONES in the MAINTAINERS file.
>>
>> > I've had a look at the PCAP RTC driver because I'm removing a few
>> > deprecated APIs. While doing so, I've discovered that the driver has
>> > never worked properly because PCAP_RTC_TOD_MASK and PCAP_RTC_DAY_MASK
>> > are both missing a bit so every day would roll over at 18:12:15 and the
>> > whole the date would roll over in 2014.
>> >
>> > I discussed with Arnd about 59ee93a528b9 ("ARM: pxa: remove irq_to_gpio
>> > from ezx-pcap driver") and it seems the whole EZX support has been
>> > broken for a while.
>> >
>>
>> As Harald said in another message I tried taking over OpenEZX for a
>> while, but eventually lost interest.
>>
>> JFTR some parts of the project has been backed up here:
>> https://gitlab.com/openezx
>>
>> I should also have a git backup of the wiki somewhere.
>>
>> > Is it worth fixing the RTC driver or could I remove it?
>> >
>>
>> I am not aware of any active user but I'd leave the final word to
>> Robert, IIRC he received some EZX hardware "recently".
>>
>> FWIW I think EZX code can be removed if it is a maintenance burden for
>> anyone.
>
> I would prefer if we could either keep or remove all of the ezx code, but not
> just remove a particular driver. Removing it all now would let us skip that
> discussion the next time someone has a problem with another device driver
> for it.

I'm on the same page here.  I'm not strongly either for or against EZX removal
(which would impact AFAIK 6 old Motorola smartphones).

If I can find the wiki archives to cross-check the mask issue (especially
PCAP_RTC_DAY_MASK), I wouldn't mind seeing a patch on that if it is kept.

If I can make the EZX boot (the one I got from Antonia), I could even test
it. As if it's worth it, I'm not personally an active user of this specific
platform, so if no one is, one less would be less maintainance burden.

Cheers.

-- 
Robert


Re: [PATCH 1/7] thermal/drivers/core: Remove the module Kconfig's option

2019-04-04 Thread Robert Jarzmik
Daniel Lezcano  writes:

> The module support for the thermal subsystem makes little sense:
>  - some subsystems relying on it are not modules, thus forcing the
>framework to be compiled in
>  - it is compiled in for almost every configs, the remaining ones
>are a few platforms where I don't see why we can not switch the thermal
>to 'y'. The drivers can stay in tristate.
>  - platforms need the thermal to be ready as soon as possible at boot time
>in order to mitigate
>
> Usually the subsystems framework are compiled-in and the plugs are as module.
>
> Remove the module option. The removal of the module related dead code will
> come after this patch gets in or is acked.
>
> Signed-off-by: Daniel Lezcano 
> Acked-by: Guenter Roeck 
> For mini2440:
> Acked-by: Krzysztof Kozlowski 
For pxa:
Acked-by: Robert Jarzmik 

Cheers.

--
Robert


Re: [PATCH] cpufreq: pxa2xx: remove incorrect __init annotation

2019-03-07 Thread Robert Jarzmik
Arnd Bergmann  writes:

> pxa_cpufreq_init_voltages() is marked __init but usually inlined into
> the non-__init pxa_cpufreq_init() function. When building with clang,
> it can stay as a standalone function in a discarded section, and produce
> this warning:
>
> WARNING: vmlinux.o(.text+0x616a00): Section mismatch in reference from the 
> function pxa_cpufreq_init() to the function 
> .init.text:pxa_cpufreq_init_voltages()
> The function pxa_cpufreq_init() references
> the function __init pxa_cpufreq_init_voltages().
> This is often because pxa_cpufreq_init lacks a __init
> annotation or the annotation of pxa_cpufreq_init_voltages is wrong.
>
> Fixes: 50e77fcd790e ("ARM: pxa: remove __init from cpufreq_driver->init()")
> Signed-off-by: Arnd Bergmann 
Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


Re: [PATCH] mmc: pxamci: fix enum type confusion

2019-03-07 Thread Robert Jarzmik
Nathan Chancellor  writes:

> On Thu, Mar 07, 2019 at 11:09:19AM +0100, Arnd Bergmann wrote:
>> clang points out several instances of mismatched types in this drivers,
>> all coming from a single declaration:
>> 
>> drivers/mmc/host/pxamci.c:193:15: error: implicit conversion from 
>> enumeration type 'enum dma_transfer_direction' to
>>   different enumeration type 'enum dma_data_direction' 
>> [-Werror,-Wenum-conversion]
>> direction = DMA_DEV_TO_MEM;
>>   ~ ^~
>> drivers/mmc/host/pxamci.c:212:62: error: implicit conversion from 
>> enumeration type 'enum dma_data_direction' to
>>   different enumeration type 'enum dma_transfer_direction' 
>> [-Werror,-Wenum-conversion]
>> tx = dmaengine_prep_slave_sg(chan, data->sg, host->dma_len, 
>> direction,
>> 
>> The behavior is correct, so this must be a simply typo from
>> dma_data_direction and dma_transfer_direction being similarly named
>> types with a similar purpose.
>> 
>> Fixes: 6464b7140951 ("mmc: pxamci: switch over to dmaengine use")
>> Signed-off-by: Arnd Bergmann 
>
> Reviewed-by: Nathan Chancellor 
Acked-by: Robert Jarzmik 

Cheers.

--
Robert


Re: [PATCH] ARM: pxa: remove CONFIG_SND_PXA2XX_AC97 in pxa_defconfig

2019-02-27 Thread Robert Jarzmik
Arnd Bergmann  writes:

> The CONFIG_SND_PXA2XX_AC97 driver is for the old AC97 bus implementation,
> and conflicts with all the new-style AC97 drivers after the conversion,
> so the drivers we want all get turned off.
>
> Not disabling the symbol however does the right thing, and we get
> the drivers that are selectively enabled here.
>
> Fixes: 25540f68c871 ("ASoC: pxa: change ac97 dependencies")
> Signed-off-by: Arnd Bergmann 
Yes, most certainly.

Acked-by: Robert Jarzmik 

Cheers.

--
Robert


Re: [PATCH -next] ARM: pxa: ssp: Fix "WARNING: invalid free of devm_ allocated data"

2019-02-15 Thread Robert Jarzmik
YueHaibing  writes:

> Since commit 1c459de1e645 ("ARM: pxa: ssp: use devm_ functions")
> kfree, iounmap, clk_put etc no need do any more in remove path.
>
> Fixes: 1c459de1e645 ("ARM: pxa: ssp: use devm_ functions")
> Signed-off-by: YueHaibing 
Sorry for the late reply, I had forgotten to answer.

Queued to pxa/for-next with a small spelling fix in the commit message, thanks.

Cheers.

--
Robert


Re: [PATCH v3 -next] mtd: docg3: Fix a possible memory leak of mtd->name

2019-01-23 Thread Robert Jarzmik
YueHaibing  writes:

> In case DOC_CHIPID_G3, mtd->name is not freed in err handling path,
> which is alloced by kasprintf(). Fix this by using devm_kasprintf().
>
> Fixes: ae9d4934b2d7 ("mtd: docg3: add multiple floor support")
> Signed-off-by: YueHaibing 
> ---
> v3: use devm_kasprintf
> ---
>  drivers/mtd/devices/docg3.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
Acked-by: Robert Jarzmik 

Cheers.

--
Robert


Re: [PATCH -next] mtd: docg3: Fix passing zero to 'PTR_ERR' warning in doc_probe_device

2019-01-23 Thread Robert Jarzmik
Boris Brezillon  writes:

> On Wed, 23 Jan 2019 17:43:58 +0800
> YueHaibing  wrote:
>
>> On 2019/1/23 17:12, Boris Brezillon wrote:
>> > On Wed, 23 Jan 2019 14:58:27 +0800
>> > YueHaibing  wrote:
>> >   
>> >> Fix a static code checker warning:
>> >> drivers/mtd/devices/docg3.c:1875
>> >>  doc_probe_device() warn: passing zero to 'ERR_PTR'
>> >>
>> >> Fixes: ae9d4934b2d7 ("mtd: docg3: add multiple floor support")
>> >> Signed-off-by: YueHaibing 
>> >> ---
>> >>  drivers/mtd/devices/docg3.c | 2 +-
>> >>  1 file changed, 1 insertion(+), 1 deletion(-)
>> >>
>> >> diff --git a/drivers/mtd/devices/docg3.c b/drivers/mtd/devices/docg3.c
>> >> index 4c94fc0..60ddc38 100644
>> >> --- a/drivers/mtd/devices/docg3.c
>> >> +++ b/drivers/mtd/devices/docg3.c
>> >> @@ -1872,7 +1872,7 @@ doc_probe_device(struct docg3_cascade *cascade, int 
>> >> floor, struct device *dev)
>> >>  nomem2:
>> >>   kfree(docg3);
>> >>  nomem1:
>> >> - return ERR_PTR(ret);
>> >> + return ret ? ERR_PTR(ret) : NULL;
>> >>  }
>> >>
>> > 
>> > This is not the right fix, you should instead set ret to -EINVAL:  
>> 
>> Thanks , will fix it in v2.
>> 
>> And seems doc_probe_device cannot return NULL. The NULL check of 
>> doc_probe_device
>> in docg3_probe also can been removed, right?
>
> Hm, looks like the ret = 0 was intentional (to identify when ID is
> invalid). Let's just keep your initial patch.
Indeed, that's for the multiple floor configuration if I remember correctly.

Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


Re: [PATCH] pxa2xx: replace spi_master with spi_controller

2019-01-18 Thread Robert Jarzmik
Lubomir Rintel  writes:

> It's also a slave controller driver now, calling it "master" is slightly
> misleading.

I think the patch subject's prefix is not correct, should be :
"spi: pxa2xx: replace spi_master with spi_controller".

Apart from that, for the mach-pxa:
Acked-by: Robert Jarzmik 

Cheers.

--
Robert


Re: [PATCH 2/2] arm/plat-pxa/ssp : unneeded to free devm_ allocated data

2019-01-03 Thread Robert Jarzmik
Peng Hao  writes:

> devm_ allocated data will be automatically freed. The free
> of devm_ allocated data is invalid.
>
> Signed-off-by: Peng Hao 

Hi Peng Hao,

Thanks for the patch. I changed your title to fit my tree, ie. :
"ARM: pxa: ssp: unneeded to free devm_ allocated data"

If you have other patches please check what is the commit subject's prefix for
the file(s) you're touching.

Queued to pxa/fixes.

Cheers.

-- 
Robert


Re: [PATCH] dmaengine: remove DBGFS_FUNC_DECL()

2018-11-30 Thread Robert Jarzmik
Sinan Kaya  writes:

> On 11/30/2018 10:42 AM, Yangtao Li wrote:
>> We already have the DEFINE_SHOW_ATTRIBUTE,There is no need to define
>> such a macro,so remove DBGFS_FUNC_DECL.Also use macro to simplify some
>> code.
>>
>> Signed-off-by: Yangtao Li
>> ---
>>   drivers/dma/amba-pl08x.c | 14 ++
>>   drivers/dma/mic_x100_dma.c   | 22 +++---
>>   drivers/dma/pxa_dma.c| 24 
>>   drivers/dma/qcom/hidma_dbg.c | 33 ++---

For pxa_dma:
Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


Re: [PATCH] dmaengine: remove DBGFS_FUNC_DECL()

2018-11-30 Thread Robert Jarzmik
Sinan Kaya  writes:

> On 11/30/2018 10:42 AM, Yangtao Li wrote:
>> We already have the DEFINE_SHOW_ATTRIBUTE,There is no need to define
>> such a macro,so remove DBGFS_FUNC_DECL.Also use macro to simplify some
>> code.
>>
>> Signed-off-by: Yangtao Li
>> ---
>>   drivers/dma/amba-pl08x.c | 14 ++
>>   drivers/dma/mic_x100_dma.c   | 22 +++---
>>   drivers/dma/pxa_dma.c| 24 
>>   drivers/dma/qcom/hidma_dbg.c | 33 ++---

For pxa_dma:
Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


[PATCH] gpio: pxa: fix legacy non pinctrl aware builds again

2018-11-15 Thread Robert Jarzmik
As pointed out by Gregor, spitz keyboard matrix is broken, with or
without CONFIG_PINCTRL set, quoting :
"The gpio matrix keypard on the Zaurus C3x00 (see spitz.c) does not work
properly. Noticeable are that rshift+c does nothing where as lshift+c
creates C.  Opposite it is for rshift+a vs lshift+a, here only rshift
works. This affects a few other combinations using the rshift or lshift
buttons."

As a matter of fact, as for platform_data based builds CONFIG_PINCTRL=n
is required for now (as opposed for devicetree builds where it should be
set), this means gpio driver should change the direction, which is what
was attempted by commit c4e5ffb6f224 ("gpio: pxa: fix legacy non pinctrl
aware builds").

Unfortunately, the input case was inverted, and the direction change was
never done. This wasn't seen up until now because the initial platform
setup (MFP) was setting this direction. Yet in Gregory's case, the
matrix-keypad driver changes back and forth the direction dynamically,
and this is why he's the first to report it.

Fixes: c4e5ffb6f224 ("gpio: pxa: fix legacy non pinctrl aware builds")
Tested-by: Greg 
Signed-off-by: Robert Jarzmik 
---
 drivers/gpio/gpio-pxa.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index 63536655f274..501147c5f3ca 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -268,8 +268,8 @@ static int pxa_gpio_direction_input(struct gpio_chip *chip, 
unsigned offset)
 
if (pxa_gpio_has_pinctrl()) {
ret = pinctrl_gpio_direction_input(chip->base + offset);
-   if (!ret)
-   return 0;
+   if (ret)
+   return ret;
}
 
spin_lock_irqsave(_lock, flags);
-- 
2.11.0



[PATCH] gpio: pxa: fix legacy non pinctrl aware builds again

2018-11-15 Thread Robert Jarzmik
As pointed out by Gregor, spitz keyboard matrix is broken, with or
without CONFIG_PINCTRL set, quoting :
"The gpio matrix keypard on the Zaurus C3x00 (see spitz.c) does not work
properly. Noticeable are that rshift+c does nothing where as lshift+c
creates C.  Opposite it is for rshift+a vs lshift+a, here only rshift
works. This affects a few other combinations using the rshift or lshift
buttons."

As a matter of fact, as for platform_data based builds CONFIG_PINCTRL=n
is required for now (as opposed for devicetree builds where it should be
set), this means gpio driver should change the direction, which is what
was attempted by commit c4e5ffb6f224 ("gpio: pxa: fix legacy non pinctrl
aware builds").

Unfortunately, the input case was inverted, and the direction change was
never done. This wasn't seen up until now because the initial platform
setup (MFP) was setting this direction. Yet in Gregory's case, the
matrix-keypad driver changes back and forth the direction dynamically,
and this is why he's the first to report it.

Fixes: c4e5ffb6f224 ("gpio: pxa: fix legacy non pinctrl aware builds")
Tested-by: Greg 
Signed-off-by: Robert Jarzmik 
---
 drivers/gpio/gpio-pxa.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index 63536655f274..501147c5f3ca 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -268,8 +268,8 @@ static int pxa_gpio_direction_input(struct gpio_chip *chip, 
unsigned offset)
 
if (pxa_gpio_has_pinctrl()) {
ret = pinctrl_gpio_direction_input(chip->base + offset);
-   if (!ret)
-   return 0;
+   if (ret)
+   return ret;
}
 
spin_lock_irqsave(_lock, flags);
-- 
2.11.0



Re: [PATCH] spi: pxa2xx: Fix '"CONFIG_OF" is not defined' warning

2018-11-14 Thread Robert Jarzmik
Lubomir Rintel  writes:

> A careless oversight. Sorry.
>
> Fixes: 0a897143b7c9 ("spi: pxa2xx: Add slave mode support")
> Signed-off-by: Lubomir Rintel 
> ---
>  drivers/spi/spi-pxa2xx.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
> index 29e6025f104c..7194070e4009 100644
> --- a/drivers/spi/spi-pxa2xx.c
> +++ b/drivers/spi/spi-pxa2xx.c
> @@ -1555,7 +1555,7 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
>   }
>  #endif
>  
> -#if CONFIG_OF
> +#ifdef CONFIG_OF
>   if (of_id) {
>   pdata->is_slave = of_property_read_bool(pdev->dev.of_node,
>   "spi-slave");
While at it, why not simply remove the "#if CONFIG_OF", the if (of_id), and
write simply this, without any ifs ? :
pdata->is_slave = of_property_read_bool(pdev->dev.of_node,
"spi-slave");

If CONFIG_OF=n, of_property_read_bool() is guaranteed to return false. If the
device is not found through devicetree, of_node == NULL and a false will
still be returned. And the last case is your bool read case (ie. when devicetree
probed the device).

Cheers.

-- 
Robert


Re: [PATCH] spi: pxa2xx: Fix '"CONFIG_OF" is not defined' warning

2018-11-14 Thread Robert Jarzmik
Lubomir Rintel  writes:

> A careless oversight. Sorry.
>
> Fixes: 0a897143b7c9 ("spi: pxa2xx: Add slave mode support")
> Signed-off-by: Lubomir Rintel 
> ---
>  drivers/spi/spi-pxa2xx.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
> index 29e6025f104c..7194070e4009 100644
> --- a/drivers/spi/spi-pxa2xx.c
> +++ b/drivers/spi/spi-pxa2xx.c
> @@ -1555,7 +1555,7 @@ pxa2xx_spi_init_pdata(struct platform_device *pdev)
>   }
>  #endif
>  
> -#if CONFIG_OF
> +#ifdef CONFIG_OF
>   if (of_id) {
>   pdata->is_slave = of_property_read_bool(pdev->dev.of_node,
>   "spi-slave");
While at it, why not simply remove the "#if CONFIG_OF", the if (of_id), and
write simply this, without any ifs ? :
pdata->is_slave = of_property_read_bool(pdev->dev.of_node,
"spi-slave");

If CONFIG_OF=n, of_property_read_bool() is guaranteed to return false. If the
device is not found through devicetree, of_node == NULL and a false will
still be returned. And the last case is your bool read case (ie. when devicetree
probed the device).

Cheers.

-- 
Robert


Re: [PATCH v3 17/18] USB: phy-mv-usb: use phy-pxa-usb

2018-11-13 Thread Robert Jarzmik
Lubomir Rintel  writes:

> Use a proper PHY driver, instead of hooks to a board support package.
Hi Lubomir,

This specific patch caught my attention, because of its title : I don't see what
phy-pxa-usb stands for, is it a typo ? I don't think anybody implemented so far
a proper phy support for pxa based boards (pxa27x actually), hence my question.

Cheers.

--
Robert


Re: [PATCH v3 17/18] USB: phy-mv-usb: use phy-pxa-usb

2018-11-13 Thread Robert Jarzmik
Lubomir Rintel  writes:

> Use a proper PHY driver, instead of hooks to a board support package.
Hi Lubomir,

This specific patch caught my attention, because of its title : I don't see what
phy-pxa-usb stands for, is it a typo ? I don't think anybody implemented so far
a proper phy support for pxa based boards (pxa27x actually), hence my question.

Cheers.

--
Robert


Re: [PATCH v4] ARM: dts: pxa: add mioa701 board description

2018-11-11 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Add device-tree description of the Mitac MIO A701 board.
> This is aimed at replacing mioa701.c board file, and once stabilized,
> the leftover, such as the suspend resume mechanics will rely on a new
> IPL, and not the legacy Windows CE one.
>
> Signed-off-by: Robert Jarzmik 
> ---
> Since v1: fix lcd_supply and lcd_backlight
>   These were depending on my internal tree changes, fit it.
> Since v2: take into account Rob's comments
> Since v3: take into account Marcel's comments
>
> This patch deserves some special "love review". As it will probably
> serve for a more broad pxa conversion to devicetree of the other boards,
> and because it touches almost all domains for a pxa platform (camera,
> video, audio, i2c, ...), it should be as clean as possible so that
> mistakes are not carried on ...
>
> Therefore I expect the review of this one to be long (ie. it won't land
> for v4.19), until it looks good enough.

Rob, would you respin that in your tester now all the missing dependencies have
hit Linus's master tree again please ?

--
Robert


Re: [PATCH v4] ARM: dts: pxa: add mioa701 board description

2018-11-11 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Add device-tree description of the Mitac MIO A701 board.
> This is aimed at replacing mioa701.c board file, and once stabilized,
> the leftover, such as the suspend resume mechanics will rely on a new
> IPL, and not the legacy Windows CE one.
>
> Signed-off-by: Robert Jarzmik 
> ---
> Since v1: fix lcd_supply and lcd_backlight
>   These were depending on my internal tree changes, fit it.
> Since v2: take into account Rob's comments
> Since v3: take into account Marcel's comments
>
> This patch deserves some special "love review". As it will probably
> serve for a more broad pxa conversion to devicetree of the other boards,
> and because it touches almost all domains for a pxa platform (camera,
> video, audio, i2c, ...), it should be as clean as possible so that
> mistakes are not carried on ...
>
> Therefore I expect the review of this one to be long (ie. it won't land
> for v4.19), until it looks good enough.

Rob, would you respin that in your tester now all the missing dependencies have
hit Linus's master tree again please ?

--
Robert


Re: [PATCH v4] ARM: dts: pxa: add mioa701 board description

2018-11-11 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Add device-tree description of the Mitac MIO A701 board.
> This is aimed at replacing mioa701.c board file, and once stabilized,
> the leftover, such as the suspend resume mechanics will rely on a new
> IPL, and not the legacy Windows CE one.
>
> Signed-off-by: Robert Jarzmik 
> ---
> Since v1: fix lcd_supply and lcd_backlight
>   These were depending on my internal tree changes, fit it.
> Since v2: take into account Rob's comments
> Since v3: take into account Marcel's comments
>
> This patch deserves some special "love review". As it will probably
> serve for a more broad pxa conversion to devicetree of the other boards,
> and because it touches almost all domains for a pxa platform (camera,
> video, audio, i2c, ...), it should be as clean as possible so that
> mistakes are not carried on ...
>
> Therefore I expect the review of this one to be long (ie. it won't land
> for v4.19), until it looks good enough.

Rob, would you respin that in your tester now all the missing dependencies have
hit Linus's master tree again please ?

--
Robert


Re: [PATCH v4] ARM: dts: pxa: add mioa701 board description

2018-11-11 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Add device-tree description of the Mitac MIO A701 board.
> This is aimed at replacing mioa701.c board file, and once stabilized,
> the leftover, such as the suspend resume mechanics will rely on a new
> IPL, and not the legacy Windows CE one.
>
> Signed-off-by: Robert Jarzmik 
> ---
> Since v1: fix lcd_supply and lcd_backlight
>   These were depending on my internal tree changes, fit it.
> Since v2: take into account Rob's comments
> Since v3: take into account Marcel's comments
>
> This patch deserves some special "love review". As it will probably
> serve for a more broad pxa conversion to devicetree of the other boards,
> and because it touches almost all domains for a pxa platform (camera,
> video, audio, i2c, ...), it should be as clean as possible so that
> mistakes are not carried on ...
>
> Therefore I expect the review of this one to be long (ie. it won't land
> for v4.19), until it looks good enough.

Rob, would you respin that in your tester now all the missing dependencies have
hit Linus's master tree again please ?

--
Robert


Re: linux-4.20-rc1/arch/arm/vfp/vfpmodule.c:576: possible cut'n'paste error

2018-11-10 Thread Robert Jarzmik
Russell King - ARM Linux  writes:

>> Interestingly, more of the same in file 
>> linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c
>> 
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:84]: (warning) Redundant 
>> assignment of 'ASCR' to itself.
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:85]: (warning) Redundant 
>> assignment of 'ARSR' to itself.
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:120]: (warning) Redundant 
>> assignment of 'ASCR' to itself.
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:121]: (warning) Redundant 
>> assignment of 'ARSR' to itself.
>> 
>> I don't know if these four are also worth fixing.
>
> There are cases where this can be false positives.  In the case of a
> status register with write-1-to-clear bits for example.  These ones
> look very much like that.
And indeed they are, for bits 2,1,0 for ASCR and 3,2,1,0 for ARSR, and you
guessed correctly they are partly status registers.

If only your checker could filter out __iomem tagged pointers, you could have
far less of these false positives ...

Cheers.

-- 
Robert


Re: linux-4.20-rc1/arch/arm/vfp/vfpmodule.c:576: possible cut'n'paste error

2018-11-10 Thread Robert Jarzmik
Russell King - ARM Linux  writes:

>> Interestingly, more of the same in file 
>> linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c
>> 
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:84]: (warning) Redundant 
>> assignment of 'ASCR' to itself.
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:85]: (warning) Redundant 
>> assignment of 'ARSR' to itself.
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:120]: (warning) Redundant 
>> assignment of 'ASCR' to itself.
>> [linux-4.20-rc1/arch/arm/mach-pxa/pxa3xx.c:121]: (warning) Redundant 
>> assignment of 'ARSR' to itself.
>> 
>> I don't know if these four are also worth fixing.
>
> There are cases where this can be false positives.  In the case of a
> status register with write-1-to-clear bits for example.  These ones
> look very much like that.
And indeed they are, for bits 2,1,0 for ASCR and 3,2,1,0 for ARSR, and you
guessed correctly they are partly status registers.

If only your checker could filter out __iomem tagged pointers, you could have
far less of these false positives ...

Cheers.

-- 
Robert


Re: [PATCH 3/5] spi: pxa2xx: use an enum for type

2018-09-21 Thread Robert Jarzmik
Lubomir Rintel  writes:

> That seems to be the correct type.
Okay, but what happens here when adev_id->driver_data is a value out of enum
range ? Does the following assignment make sense ?
> + type = (enum pxa_ssp_type)adev_id->driver_data;

As a side note, could you join for the next throw to the review :
 - Jarkko Nikula 
 - Mika Westerberg 

Even if they are Intel, I think they have worked a lot on this driver for Intel
platforms.

Cheers.

-- 
Robert


Re: [PATCH 3/5] spi: pxa2xx: use an enum for type

2018-09-21 Thread Robert Jarzmik
Lubomir Rintel  writes:

> That seems to be the correct type.
Okay, but what happens here when adev_id->driver_data is a value out of enum
range ? Does the following assignment make sense ?
> + type = (enum pxa_ssp_type)adev_id->driver_data;

As a side note, could you join for the next throw to the review :
 - Jarkko Nikula 
 - Mika Westerberg 

Even if they are Intel, I think they have worked a lot on this driver for Intel
platforms.

Cheers.

-- 
Robert


[PATCH v4] ARM: dts: pxa: add mioa701 board description

2018-09-15 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
Since v1: fix lcd_supply and lcd_backlight
  These were depending on my internal tree changes, fit it.
Since v2: take into account Rob's comments
Since v3: take into account Marcel's comments

This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   2 +
 arch/arm/boot/dts/mioa701.dts | 570 ++
 2 files changed, 572 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b5bd3de87c33..8809f4e2244d 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -775,6 +775,8 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += \
+   mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..9e368361d498
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,570 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   compatible = "mitac,mioa701", "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@a200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 0x10>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+

[PATCH v4] ARM: dts: pxa: add mioa701 board description

2018-09-15 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
Since v1: fix lcd_supply and lcd_backlight
  These were depending on my internal tree changes, fit it.
Since v2: take into account Rob's comments
Since v3: take into account Marcel's comments

This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   2 +
 arch/arm/boot/dts/mioa701.dts | 570 ++
 2 files changed, 572 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b5bd3de87c33..8809f4e2244d 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -775,6 +775,8 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += \
+   mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..9e368361d498
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,570 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   compatible = "mitac,mioa701", "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@a200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 0x10>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+

Re: [PATCH v3] ARM: dts: pxa: add mioa701 board description

2018-09-13 Thread Robert Jarzmik
Marcel Ziswiler  writes:

> Hi Robert
>>  arch/arm/boot/dts/Makefile|   2 +
>>  arch/arm/boot/dts/mioa701.dts | 558 
>
> Isn't that one supposed to be prefixed by pxa270-?
Good point, for v4.

>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
...
>> +dtb-$(CONFIG_ARCH_PXA) += \
> Wouldn't it rather make more sense to use CONFIG_MACH_PXA27X_DT
> instead?
No, I'll have all the devicetree files under one config, for the PXA
architecture.

>> +model = "Mitac Mio A701 Board";
>> +compatible = "marvell,pxa270";
>
> Usually, there is also a compatible for the particular board e.g.
> "mitac,mioa701", not? You might have to check on the vendor prefix
> though.
Ok.

>> +pinctrl_usb_default: usb-default {
>> +PMMUX(n-usb-detect, 13, gpio_in);
>> +PMMUX_LPM_LOW(n-dplus-pullup, 22,
>> gpio_out);
>> +};
>> +pinctrl_power_default: power-default {
>> +PMMUX_LPM_LOW(charge-enable, 9,
>> gpio_out);
>> +PMMUX(charge-vdrop, 80, gpio_out);
>> +PMMUX(ac-detect, 96, gpio_in);
>> +};
>
> I guess usually, one would add newlines in front and between those
> pinctrls but its kind of a matter of taste.
Ok, for this and all the following newlines.
>> +ffuart: serial@4010 {
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_ffuart_default>;
>> +status = "okay";
>> +};
>> +
>> +btuart: serial@4020 {
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_btuart_default>;
>> +status = "okay";
>> +};
>> +
>> +stuart: serial@4070 {
>> +status = "okay";
>> +};
>
> I believe pxa2xx.dtsi calls them uart rather than serial so unless you
> plan to change this we will have to stick to using uart instead.
There was a patch submitted for that earlier, at Rob's demand, to change these
names. That's another dependency on the pxa/dt tree.
>
> I also don't think those serial port labels buy us anything, so I would
> get rid of them.
As there are already in the .dtsi files, they don't hurt do they ?

>> +pwri2c: i2c@40f000180 {
>
> Uups, I guess that address is wrong, not? I will send a patch to fix it
> in pxa27x.dtsi as well.
Fixed here as well.

>
>> +status = "okay";
>> +
>> +core_regulator@14 {
>> +compatible = "maxim,max1586";
>> +reg = <0x14>;
>> +v3-gain = <100>;
>> +
>> +regulators {
>> +vcc_core: v3 {
>> +regulator-name =
>> "vcc_core";
>> +regulator-compatible 
>> = "Output_V3";
>> +regulator-min-
>> microvolt = <100>;
>> +regulator-max-
>> microvolt = <1705000>;
>> +regulator-always-on;
>> +};
>> +};
>> +};
>
> Haven't seen core_regulator before. Just regulator would do unless it
> would be a more complex pmic.
Ok.

>
>
>> +port {
>> +mt9m111_1: endpoint {
>> +bus-width = <8>;
>> +remote-endpoint =
>> <_camera>;
>> +};
>> +};
>> +};
>> +};
>
> Same with pxai2c1 and mt9m111.
Ok for mt9m111, same answer as before for pxai2c1.
>> +gpio-keys {
>> +compatible = "gpio-keys";
>> +#address-cells = <1>;
>> +#size-cells = <0>;
>> +autorepeat;
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_gpiokeys_default>;
>> +status = "okay";
>> +
>> +power-button {
>> +label = "GPIO Key Power";
>> +linux,code = <174>;
>> +gpios = < 0 0>;
>> +gpio-key,wakeup;
>
> I believe that got deprecated in favour of just wakeup-source.
Ok.

>> +lcd-controller@4050 {
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_lcd_default>;
>> +status = "okay";
>
> Missing newline.
>
>> +port {
>> +lcdc_out: endpoint {
>> +remote-endpoint =
>> 

Re: [PATCH v3] ARM: dts: pxa: add mioa701 board description

2018-09-13 Thread Robert Jarzmik
Marcel Ziswiler  writes:

> Hi Robert
>>  arch/arm/boot/dts/Makefile|   2 +
>>  arch/arm/boot/dts/mioa701.dts | 558 
>
> Isn't that one supposed to be prefixed by pxa270-?
Good point, for v4.

>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
...
>> +dtb-$(CONFIG_ARCH_PXA) += \
> Wouldn't it rather make more sense to use CONFIG_MACH_PXA27X_DT
> instead?
No, I'll have all the devicetree files under one config, for the PXA
architecture.

>> +model = "Mitac Mio A701 Board";
>> +compatible = "marvell,pxa270";
>
> Usually, there is also a compatible for the particular board e.g.
> "mitac,mioa701", not? You might have to check on the vendor prefix
> though.
Ok.

>> +pinctrl_usb_default: usb-default {
>> +PMMUX(n-usb-detect, 13, gpio_in);
>> +PMMUX_LPM_LOW(n-dplus-pullup, 22,
>> gpio_out);
>> +};
>> +pinctrl_power_default: power-default {
>> +PMMUX_LPM_LOW(charge-enable, 9,
>> gpio_out);
>> +PMMUX(charge-vdrop, 80, gpio_out);
>> +PMMUX(ac-detect, 96, gpio_in);
>> +};
>
> I guess usually, one would add newlines in front and between those
> pinctrls but its kind of a matter of taste.
Ok, for this and all the following newlines.
>> +ffuart: serial@4010 {
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_ffuart_default>;
>> +status = "okay";
>> +};
>> +
>> +btuart: serial@4020 {
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_btuart_default>;
>> +status = "okay";
>> +};
>> +
>> +stuart: serial@4070 {
>> +status = "okay";
>> +};
>
> I believe pxa2xx.dtsi calls them uart rather than serial so unless you
> plan to change this we will have to stick to using uart instead.
There was a patch submitted for that earlier, at Rob's demand, to change these
names. That's another dependency on the pxa/dt tree.
>
> I also don't think those serial port labels buy us anything, so I would
> get rid of them.
As there are already in the .dtsi files, they don't hurt do they ?

>> +pwri2c: i2c@40f000180 {
>
> Uups, I guess that address is wrong, not? I will send a patch to fix it
> in pxa27x.dtsi as well.
Fixed here as well.

>
>> +status = "okay";
>> +
>> +core_regulator@14 {
>> +compatible = "maxim,max1586";
>> +reg = <0x14>;
>> +v3-gain = <100>;
>> +
>> +regulators {
>> +vcc_core: v3 {
>> +regulator-name =
>> "vcc_core";
>> +regulator-compatible 
>> = "Output_V3";
>> +regulator-min-
>> microvolt = <100>;
>> +regulator-max-
>> microvolt = <1705000>;
>> +regulator-always-on;
>> +};
>> +};
>> +};
>
> Haven't seen core_regulator before. Just regulator would do unless it
> would be a more complex pmic.
Ok.

>
>
>> +port {
>> +mt9m111_1: endpoint {
>> +bus-width = <8>;
>> +remote-endpoint =
>> <_camera>;
>> +};
>> +};
>> +};
>> +};
>
> Same with pxai2c1 and mt9m111.
Ok for mt9m111, same answer as before for pxai2c1.
>> +gpio-keys {
>> +compatible = "gpio-keys";
>> +#address-cells = <1>;
>> +#size-cells = <0>;
>> +autorepeat;
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_gpiokeys_default>;
>> +status = "okay";
>> +
>> +power-button {
>> +label = "GPIO Key Power";
>> +linux,code = <174>;
>> +gpios = < 0 0>;
>> +gpio-key,wakeup;
>
> I believe that got deprecated in favour of just wakeup-source.
Ok.

>> +lcd-controller@4050 {
>> +pinctrl-names = "default";
>> +pinctrl-0 = <_lcd_default>;
>> +status = "okay";
>
> Missing newline.
>
>> +port {
>> +lcdc_out: endpoint {
>> +remote-endpoint =
>> 

Re: [PATCH] Input: wm97xx: only unregister wm97xx_driver if it has been registered

2018-09-09 Thread Robert Jarzmik
Charles Keepax  writes:

> On Tue, Sep 04, 2018 at 07:35:05PM +0100, Colin King wrote:
>> From: Colin Ian King 
>> 
>> In the case where IS_BUILTIN(CONFIG_AC97_BUS)) is not true, the
>> wm97xx_driver driver is being unregistered even it has not been
>> previously registered.  Fix this by only unregistering it if
>> IS_BUILTIN(CONFIG_AC97_BUS)) is true.  This fixes the warning
>> message:
>> 
>> [  834.111248] [ cut here ]
>> [  834.111248] Unexpected driver unregister!
>> [  834.111319] WARNING: CPU: 2 PID: 11749 at drivers/base/driver.c:193 
>> driver_unregister+0x3b/0x40
>> [  834.111319] Modules linked in: wm97xx_ts(-) 
>> 
>> ..and a stack trace.
>> 
>> To easily reproduce this, load and unload the module on a system where
>> the hardware is not supported.
>> 
>> Fixes: ae9d1b5fbd7b ("Input: wm97xx: add new AC97 bus support")
>> Signed-off-by: Colin Ian King 
>> ---
>
> Acked-by: Charles Keepax 
Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


Re: [PATCH] Input: wm97xx: only unregister wm97xx_driver if it has been registered

2018-09-09 Thread Robert Jarzmik
Charles Keepax  writes:

> On Tue, Sep 04, 2018 at 07:35:05PM +0100, Colin King wrote:
>> From: Colin Ian King 
>> 
>> In the case where IS_BUILTIN(CONFIG_AC97_BUS)) is not true, the
>> wm97xx_driver driver is being unregistered even it has not been
>> previously registered.  Fix this by only unregistering it if
>> IS_BUILTIN(CONFIG_AC97_BUS)) is true.  This fixes the warning
>> message:
>> 
>> [  834.111248] [ cut here ]
>> [  834.111248] Unexpected driver unregister!
>> [  834.111319] WARNING: CPU: 2 PID: 11749 at drivers/base/driver.c:193 
>> driver_unregister+0x3b/0x40
>> [  834.111319] Modules linked in: wm97xx_ts(-) 
>> 
>> ..and a stack trace.
>> 
>> To easily reproduce this, load and unload the module on a system where
>> the hardware is not supported.
>> 
>> Fixes: ae9d1b5fbd7b ("Input: wm97xx: add new AC97 bus support")
>> Signed-off-by: Colin Ian King 
>> ---
>
> Acked-by: Charles Keepax 
Acked-by: Robert Jarzmik 

Cheers.

-- 
Robert


Re: [PATCH] ARM: dts: pxa: add pincontrol helpers

2018-08-31 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
> easier, and can be easily converted from old mfp mach-pxa code to
> devicetree.

As this is exactly the same patch sent out for review July the 7th, queued to
pxa/dt.

--
Robert


Re: [PATCH] ARM: dts: pxa: add pincontrol helpers

2018-08-31 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
> easier, and can be easily converted from old mfp mach-pxa code to
> devicetree.

As this is exactly the same patch sent out for review July the 7th, queued to
pxa/dt.

--
Robert


Re: [PATCH] ARM: dts: pxa: fix power i2c base address

2018-08-31 Thread Robert Jarzmik
Marcel Ziswiler  writes:

> There is one too many zeroes in the Power I2C base address. Fix this.
>
> Signed-off-by: Marcel Ziswiler 
Queued to pxa/dt, thanks.

Cheers.

--
Robert


Re: [PATCH] ARM: dts: pxa: fix power i2c base address

2018-08-31 Thread Robert Jarzmik
Marcel Ziswiler  writes:

> There is one too many zeroes in the Power I2C base address. Fix this.
>
> Signed-off-by: Marcel Ziswiler 
Queued to pxa/dt, thanks.

Cheers.

--
Robert


Re: [PATCH v3] ARM: dts: pxa: add mioa701 board description

2018-08-31 Thread Robert Jarzmik
kbuild test robot  writes:

> Hi Robert,
>
> I love your patch! Yet something to improve:
This is because you are missing at least this patch submitted earlier :
 - [PATCH] ARM: dts: pxa: add pincontrol helpers

You're also missing the previous patches in the pxa/dt tree, which are already
on the trampoline for linux-next :
 - git fetch github.com:rjarzmik/linux.git pxa/dt

Cheers.

--
Robert


Re: [PATCH v3] ARM: dts: pxa: add mioa701 board description

2018-08-31 Thread Robert Jarzmik
kbuild test robot  writes:

> Hi Robert,
>
> I love your patch! Yet something to improve:
This is because you are missing at least this patch submitted earlier :
 - [PATCH] ARM: dts: pxa: add pincontrol helpers

You're also missing the previous patches in the pxa/dt tree, which are already
on the trampoline for linux-next :
 - git fetch github.com:rjarzmik/linux.git pxa/dt

Cheers.

--
Robert


[PATCH v3] ARM: dts: pxa: add mioa701 board description

2018-08-30 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
Since v1: fix lcd_supply and lcd_backlight
  These were depending on my internal tree changes, fit it.
Since v2: take into account Rob's comments

This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   2 +
 arch/arm/boot/dts/mioa701.dts | 558 ++
 2 files changed, 560 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b5bd3de87c33..8809f4e2244d 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -775,6 +775,8 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += \
+   mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..3791bc69e155
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,558 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   compatible = "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@a200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 0x10>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+   PMMUX(gsm-is-on, 25, gpio_in);
+   PMMUX_LPM_HIGH(g

[PATCH v3] ARM: dts: pxa: add mioa701 board description

2018-08-30 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
Since v1: fix lcd_supply and lcd_backlight
  These were depending on my internal tree changes, fit it.
Since v2: take into account Rob's comments

This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   2 +
 arch/arm/boot/dts/mioa701.dts | 558 ++
 2 files changed, 560 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b5bd3de87c33..8809f4e2244d 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -775,6 +775,8 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += \
+   mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..3791bc69e155
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,558 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   compatible = "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@a200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 0x10>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+   PMMUX(gsm-is-on, 25, gpio_in);
+   PMMUX_LPM_HIGH(g

[PATCH] ARM: dts: pxa: add pincontrol helpers

2018-08-30 Thread Robert Jarzmik
Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
easier, and can be easily converted from old mfp mach-pxa code to
devicetree.

An example of such conversion would be :
static unsigned long mioa701_pin_config[] = {
GPIO32_MMC_CLK,
GPIO92_MMC_DAT_0,
GPIO109_MMC_DAT_1,
GPIO110_MMC_DAT_2,
GPIO111_MMC_DAT_3,
GPIO112_MMC_CMD,
MIO_CFG_IN(GPIO78_SDIO_RO, AF0),
MIO_CFG_IN(GPIO15_SDIO_INSERT, AF0),
MIO_CFG_OUT(GPIO91_SDIO_EN, AF0, DRIVE_LOW),
};
into:
pinctrl_mmc_default: mmc-default {
PMMUX(sd-insert, 15, gpio_in);
PMMUX(mmclk, 32, MMCLK);
PMMUX(sd-ro, 78, gpio_in);
PMMUX_LPM_LOW(sd-enable, 91, gpio_out);
PMMUX(mmdat0, 92, MMDAT<0>);
PMMUX(mmdat1, 109, MMDAT<1>);
PMMUX(mmdat2, 110, MMDAT<2>);
PMMUX(mmdat3, 111, MMDAT<3>);
PMMUX(mmcmd, 112, MMCMD);
};

The third column of PMMUX*() helpers can be found in pincontrol muxing
functions, either in pinctrl-pxa27x.c (or pinctrl-pxa25x.c), or by
inspecting the pincontrol once booted in debugfs.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index a520b4c14ea9..81312a9813f6 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -9,6 +9,25 @@
 #include "skeleton.dtsi"
 #include "dt-bindings/clock/pxa-clock.h"
 
+#define PMGROUP(pin) #pin
+#define PMMUX(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   }
+#define PMMUX_LPM_LOW(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-disable;  \
+   }
+#define PMMUX_LPM_HIGH(func, pin, af)  \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-enable;   \
+   }
+
 / {
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
-- 
2.11.0



[PATCH] ARM: dts: pxa: add pincontrol helpers

2018-08-30 Thread Robert Jarzmik
Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
easier, and can be easily converted from old mfp mach-pxa code to
devicetree.

An example of such conversion would be :
static unsigned long mioa701_pin_config[] = {
GPIO32_MMC_CLK,
GPIO92_MMC_DAT_0,
GPIO109_MMC_DAT_1,
GPIO110_MMC_DAT_2,
GPIO111_MMC_DAT_3,
GPIO112_MMC_CMD,
MIO_CFG_IN(GPIO78_SDIO_RO, AF0),
MIO_CFG_IN(GPIO15_SDIO_INSERT, AF0),
MIO_CFG_OUT(GPIO91_SDIO_EN, AF0, DRIVE_LOW),
};
into:
pinctrl_mmc_default: mmc-default {
PMMUX(sd-insert, 15, gpio_in);
PMMUX(mmclk, 32, MMCLK);
PMMUX(sd-ro, 78, gpio_in);
PMMUX_LPM_LOW(sd-enable, 91, gpio_out);
PMMUX(mmdat0, 92, MMDAT<0>);
PMMUX(mmdat1, 109, MMDAT<1>);
PMMUX(mmdat2, 110, MMDAT<2>);
PMMUX(mmdat3, 111, MMDAT<3>);
PMMUX(mmcmd, 112, MMCMD);
};

The third column of PMMUX*() helpers can be found in pincontrol muxing
functions, either in pinctrl-pxa27x.c (or pinctrl-pxa25x.c), or by
inspecting the pincontrol once booted in debugfs.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index a520b4c14ea9..81312a9813f6 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -9,6 +9,25 @@
 #include "skeleton.dtsi"
 #include "dt-bindings/clock/pxa-clock.h"
 
+#define PMGROUP(pin) #pin
+#define PMMUX(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   }
+#define PMMUX_LPM_LOW(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-disable;  \
+   }
+#define PMMUX_LPM_HIGH(func, pin, af)  \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-enable;   \
+   }
+
 / {
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
-- 
2.11.0



Re: [PATCH] ARM: dts: pxa: change serial node names

2018-08-30 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Change from xxuart to serial to normalize the devicetree pxa serial
> support.
>
> Signed-off-by: Robert Jarzmik 
> ---
>  arch/arm/boot/dts/pxa2xx.dtsi | 8 
>  1 file changed, 4 insertions(+), 4 deletions(-)
Queued to pxa/dt.

--
Robert


Re: [PATCH] ARM: dts: pxa: change serial node names

2018-08-30 Thread Robert Jarzmik
Robert Jarzmik  writes:

> Change from xxuart to serial to normalize the devicetree pxa serial
> support.
>
> Signed-off-by: Robert Jarzmik 
> ---
>  arch/arm/boot/dts/pxa2xx.dtsi | 8 
>  1 file changed, 4 insertions(+), 4 deletions(-)
Queued to pxa/dt.

--
Robert


[PATCH v9] ASoC: pxa: switch to new ac97 bus support

2018-08-25 Thread Robert Jarzmik
Switch to the new ac97 bus support in sound/ac97 instead of the legacy
snd_ac97 one.

Signed-off-by: Robert Jarzmik 
---
Since v8: fixed the trivial compilation error
  v7 was in https://patchwork.kernel.org/patch/9951919/
---
 sound/arm/Kconfig   |  1 -
 sound/soc/pxa/Kconfig   |  5 ++---
 sound/soc/pxa/pxa2xx-ac97.c | 48 +++--
 3 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig
index 5fbd47a9177e..28867732a318 100644
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
@@ -31,7 +31,6 @@ endif # SND_ARM
 
 config SND_PXA2XX_LIB
tristate
-   select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97
select SND_DMAENGINE_PCM
 
 config SND_PXA2XX_LIB_AC97
diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig
index 776e148b0aa2..29f577e6dfc0 100644
--- a/sound/soc/pxa/Kconfig
+++ b/sound/soc/pxa/Kconfig
@@ -19,14 +19,13 @@ config SND_MMP_SOC
 
 config SND_PXA2XX_AC97
tristate
-   select SND_AC97_CODEC
 
 config SND_PXA2XX_SOC_AC97
tristate
-   select AC97_BUS
+   select AC97_BUS_NEW
select SND_PXA2XX_LIB
select SND_PXA2XX_LIB_AC97
-   select SND_SOC_AC97_BUS
+   select SND_SOC_AC97_BUS_NEW
 
 config SND_PXA2XX_SOC_I2S
select SND_PXA2XX_LIB
diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c
index 9f779657bc86..f8a3aa6c6d4e 100644
--- a/sound/soc/pxa/pxa2xx-ac97.c
+++ b/sound/soc/pxa/pxa2xx-ac97.c
@@ -17,6 +17,7 @@
 #include 
 #include 
 
+#include 
 #include 
 #include 
 #include 
@@ -27,43 +28,35 @@
 #include 
 #include 
 
-static void pxa2xx_ac97_warm_reset(struct snd_ac97 *ac97)
+static void pxa2xx_ac97_warm_reset(struct ac97_controller *adrv)
 {
pxa2xx_ac97_try_warm_reset();
 
pxa2xx_ac97_finish_reset();
 }
 
-static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97)
+static void pxa2xx_ac97_cold_reset(struct ac97_controller *adrv)
 {
pxa2xx_ac97_try_cold_reset();
 
pxa2xx_ac97_finish_reset();
 }
 
-static unsigned short pxa2xx_ac97_legacy_read(struct snd_ac97 *ac97,
- unsigned short reg)
+static int pxa2xx_ac97_read_actrl(struct ac97_controller *adrv, int slot,
+ unsigned short reg)
 {
-   int ret;
-
-   ret = pxa2xx_ac97_read(ac97->num, reg);
-   if (ret < 0)
-   return 0;
-   else
-   return (unsigned short)(ret & 0x);
+   return pxa2xx_ac97_read(slot, reg);
 }
 
-static void pxa2xx_ac97_legacy_write(struct snd_ac97 *ac97,
-unsigned short reg, unsigned short val)
+static int pxa2xx_ac97_write_actrl(struct ac97_controller *adrv, int slot,
+  unsigned short reg, unsigned short val)
 {
-   int ret;
-
-   ret = pxa2xx_ac97_write(ac97->num, reg, val);
+   return pxa2xx_ac97_write(slot, reg, val);
 }
 
-static struct snd_ac97_bus_ops pxa2xx_ac97_ops = {
-   .read   = pxa2xx_ac97_legacy_read,
-   .write  = pxa2xx_ac97_legacy_write,
+static struct ac97_controller_ops pxa2xx_ac97_ops = {
+   .read   = pxa2xx_ac97_read_actrl,
+   .write  = pxa2xx_ac97_write_actrl,
.warm_reset = pxa2xx_ac97_warm_reset,
.reset  = pxa2xx_ac97_cold_reset,
 };
@@ -233,6 +226,9 @@ MODULE_DEVICE_TABLE(of, pxa2xx_ac97_dt_ids);
 static int pxa2xx_ac97_dev_probe(struct platform_device *pdev)
 {
int ret;
+   struct ac97_controller *ctrl;
+   pxa2xx_audio_ops_t *pdata = pdev->dev.platform_data;
+   void **codecs_pdata;
 
if (pdev->id != -1) {
dev_err(>dev, "PXA2xx has only one AC97 port.\n");
@@ -245,10 +241,14 @@ static int pxa2xx_ac97_dev_probe(struct platform_device 
*pdev)
return ret;
}
 
-   ret = snd_soc_set_ac97_ops(_ac97_ops);
-   if (ret != 0)
-   return ret;
+   codecs_pdata = pdata ? pdata->codec_pdata : NULL;
+   ctrl = snd_ac97_controller_register(_ac97_ops, >dev,
+   AC97_SLOTS_AVAILABLE_ALL,
+   codecs_pdata);
+   if (IS_ERR(ctrl))
+   return PTR_ERR(ctrl);
 
+   platform_set_drvdata(pdev, ctrl);
/* Punt most of the init to the SoC probe; we may need the machine
 * driver to do interesting things with the clocking to get us up
 * and running.
@@ -259,8 +259,10 @@ static int pxa2xx_ac97_dev_probe(struct platform_device 
*pdev)
 
 static int pxa2xx_ac97_dev_remove(struct platform_device *pdev)
 {
+   struct ac97_controller *ctrl = platform_get_drvdata(pdev);
+
snd_soc_unregister_component(>dev);
-   snd_soc_set_ac97_ops(NULL);
+   snd_ac97_controller_unregister(ctrl);
pxa2xx_ac97_hw_remove(pdev);
return 0;
 }
-- 
2.11.0



[PATCH v9] ASoC: pxa: switch to new ac97 bus support

2018-08-25 Thread Robert Jarzmik
Switch to the new ac97 bus support in sound/ac97 instead of the legacy
snd_ac97 one.

Signed-off-by: Robert Jarzmik 
---
Since v8: fixed the trivial compilation error
  v7 was in https://patchwork.kernel.org/patch/9951919/
---
 sound/arm/Kconfig   |  1 -
 sound/soc/pxa/Kconfig   |  5 ++---
 sound/soc/pxa/pxa2xx-ac97.c | 48 +++--
 3 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig
index 5fbd47a9177e..28867732a318 100644
--- a/sound/arm/Kconfig
+++ b/sound/arm/Kconfig
@@ -31,7 +31,6 @@ endif # SND_ARM
 
 config SND_PXA2XX_LIB
tristate
-   select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97
select SND_DMAENGINE_PCM
 
 config SND_PXA2XX_LIB_AC97
diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig
index 776e148b0aa2..29f577e6dfc0 100644
--- a/sound/soc/pxa/Kconfig
+++ b/sound/soc/pxa/Kconfig
@@ -19,14 +19,13 @@ config SND_MMP_SOC
 
 config SND_PXA2XX_AC97
tristate
-   select SND_AC97_CODEC
 
 config SND_PXA2XX_SOC_AC97
tristate
-   select AC97_BUS
+   select AC97_BUS_NEW
select SND_PXA2XX_LIB
select SND_PXA2XX_LIB_AC97
-   select SND_SOC_AC97_BUS
+   select SND_SOC_AC97_BUS_NEW
 
 config SND_PXA2XX_SOC_I2S
select SND_PXA2XX_LIB
diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c
index 9f779657bc86..f8a3aa6c6d4e 100644
--- a/sound/soc/pxa/pxa2xx-ac97.c
+++ b/sound/soc/pxa/pxa2xx-ac97.c
@@ -17,6 +17,7 @@
 #include 
 #include 
 
+#include 
 #include 
 #include 
 #include 
@@ -27,43 +28,35 @@
 #include 
 #include 
 
-static void pxa2xx_ac97_warm_reset(struct snd_ac97 *ac97)
+static void pxa2xx_ac97_warm_reset(struct ac97_controller *adrv)
 {
pxa2xx_ac97_try_warm_reset();
 
pxa2xx_ac97_finish_reset();
 }
 
-static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97)
+static void pxa2xx_ac97_cold_reset(struct ac97_controller *adrv)
 {
pxa2xx_ac97_try_cold_reset();
 
pxa2xx_ac97_finish_reset();
 }
 
-static unsigned short pxa2xx_ac97_legacy_read(struct snd_ac97 *ac97,
- unsigned short reg)
+static int pxa2xx_ac97_read_actrl(struct ac97_controller *adrv, int slot,
+ unsigned short reg)
 {
-   int ret;
-
-   ret = pxa2xx_ac97_read(ac97->num, reg);
-   if (ret < 0)
-   return 0;
-   else
-   return (unsigned short)(ret & 0x);
+   return pxa2xx_ac97_read(slot, reg);
 }
 
-static void pxa2xx_ac97_legacy_write(struct snd_ac97 *ac97,
-unsigned short reg, unsigned short val)
+static int pxa2xx_ac97_write_actrl(struct ac97_controller *adrv, int slot,
+  unsigned short reg, unsigned short val)
 {
-   int ret;
-
-   ret = pxa2xx_ac97_write(ac97->num, reg, val);
+   return pxa2xx_ac97_write(slot, reg, val);
 }
 
-static struct snd_ac97_bus_ops pxa2xx_ac97_ops = {
-   .read   = pxa2xx_ac97_legacy_read,
-   .write  = pxa2xx_ac97_legacy_write,
+static struct ac97_controller_ops pxa2xx_ac97_ops = {
+   .read   = pxa2xx_ac97_read_actrl,
+   .write  = pxa2xx_ac97_write_actrl,
.warm_reset = pxa2xx_ac97_warm_reset,
.reset  = pxa2xx_ac97_cold_reset,
 };
@@ -233,6 +226,9 @@ MODULE_DEVICE_TABLE(of, pxa2xx_ac97_dt_ids);
 static int pxa2xx_ac97_dev_probe(struct platform_device *pdev)
 {
int ret;
+   struct ac97_controller *ctrl;
+   pxa2xx_audio_ops_t *pdata = pdev->dev.platform_data;
+   void **codecs_pdata;
 
if (pdev->id != -1) {
dev_err(>dev, "PXA2xx has only one AC97 port.\n");
@@ -245,10 +241,14 @@ static int pxa2xx_ac97_dev_probe(struct platform_device 
*pdev)
return ret;
}
 
-   ret = snd_soc_set_ac97_ops(_ac97_ops);
-   if (ret != 0)
-   return ret;
+   codecs_pdata = pdata ? pdata->codec_pdata : NULL;
+   ctrl = snd_ac97_controller_register(_ac97_ops, >dev,
+   AC97_SLOTS_AVAILABLE_ALL,
+   codecs_pdata);
+   if (IS_ERR(ctrl))
+   return PTR_ERR(ctrl);
 
+   platform_set_drvdata(pdev, ctrl);
/* Punt most of the init to the SoC probe; we may need the machine
 * driver to do interesting things with the clocking to get us up
 * and running.
@@ -259,8 +259,10 @@ static int pxa2xx_ac97_dev_probe(struct platform_device 
*pdev)
 
 static int pxa2xx_ac97_dev_remove(struct platform_device *pdev)
 {
+   struct ac97_controller *ctrl = platform_get_drvdata(pdev);
+
snd_soc_unregister_component(>dev);
-   snd_soc_set_ac97_ops(NULL);
+   snd_ac97_controller_unregister(ctrl);
pxa2xx_ac97_hw_remove(pdev);
return 0;
 }
-- 
2.11.0



[PATCH] gpio: pxa: handle corner case of unprobed device

2018-08-25 Thread Robert Jarzmik
In the corner case where the gpio driver probe fails, for whatever
reason, the suspend and resume handlers will still be called as they
have to be registered as syscore operations. This applies as well when
no probe was called while the driver has been built in the kernel.

Nicolas tracked this in :
https://bugzilla.kernel.org/show_bug.cgi?id=200905

Therefore, add a failsafe in these function, and test if a proper probe
succeeded and the driver is functional.

Signed-off-by: Robert Jarzmik 
Reported-by: Nicolas Chauvet 
---
 drivers/gpio/gpio-pxa.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index c18712dabf93..bfe4c5c9f41c 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -776,6 +776,9 @@ static int pxa_gpio_suspend(void)
struct pxa_gpio_bank *c;
int gpio;
 
+   if (!pchip)
+   return 0;
+
for_each_gpio_bank(gpio, c, pchip) {
c->saved_gplr = readl_relaxed(c->regbase + GPLR_OFFSET);
c->saved_gpdr = readl_relaxed(c->regbase + GPDR_OFFSET);
@@ -794,6 +797,9 @@ static void pxa_gpio_resume(void)
struct pxa_gpio_bank *c;
int gpio;
 
+   if (!pchip)
+   return;
+
for_each_gpio_bank(gpio, c, pchip) {
/* restore level with set/clear */
writel_relaxed(c->saved_gplr, c->regbase + GPSR_OFFSET);
-- 
2.11.0



[PATCH] gpio: pxa: handle corner case of unprobed device

2018-08-25 Thread Robert Jarzmik
In the corner case where the gpio driver probe fails, for whatever
reason, the suspend and resume handlers will still be called as they
have to be registered as syscore operations. This applies as well when
no probe was called while the driver has been built in the kernel.

Nicolas tracked this in :
https://bugzilla.kernel.org/show_bug.cgi?id=200905

Therefore, add a failsafe in these function, and test if a proper probe
succeeded and the driver is functional.

Signed-off-by: Robert Jarzmik 
Reported-by: Nicolas Chauvet 
---
 drivers/gpio/gpio-pxa.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index c18712dabf93..bfe4c5c9f41c 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -776,6 +776,9 @@ static int pxa_gpio_suspend(void)
struct pxa_gpio_bank *c;
int gpio;
 
+   if (!pchip)
+   return 0;
+
for_each_gpio_bank(gpio, c, pchip) {
c->saved_gplr = readl_relaxed(c->regbase + GPLR_OFFSET);
c->saved_gpdr = readl_relaxed(c->regbase + GPDR_OFFSET);
@@ -794,6 +797,9 @@ static void pxa_gpio_resume(void)
struct pxa_gpio_bank *c;
int gpio;
 
+   if (!pchip)
+   return;
+
for_each_gpio_bank(gpio, c, pchip) {
/* restore level with set/clear */
writel_relaxed(c->saved_gplr, c->regbase + GPSR_OFFSET);
-- 
2.11.0



Re: linux-next: build failure after merge of the arm-soc tree

2018-07-16 Thread Robert Jarzmik
Olof Johansson  writes:

> It's a known issue due to dependencies with a driver tree. :(
>
> Robert, this is unfortunate. What's the dependent patches? We can pick
> them up in our tree as duplicates if needed.
I'd rather postpone one of the patches, as I explained in the pull request.
As Stephen noticed, this will be :
0d0b16b8e008 ("dmaengine: pxa: make the filter function internal")

I'll queue this one for the 4.20 cycle. By the way, all of this cames from the
fact that I didn't take this very patch in my imutable branch for this change
...

I'll also resend a pull request, without this patch if that's good for you,
which will solve the breakage.

Cheers.

-- 
Robert


Re: linux-next: build failure after merge of the arm-soc tree

2018-07-16 Thread Robert Jarzmik
Olof Johansson  writes:

> It's a known issue due to dependencies with a driver tree. :(
>
> Robert, this is unfortunate. What's the dependent patches? We can pick
> them up in our tree as duplicates if needed.
I'd rather postpone one of the patches, as I explained in the pull request.
As Stephen noticed, this will be :
0d0b16b8e008 ("dmaengine: pxa: make the filter function internal")

I'll queue this one for the 4.20 cycle. By the way, all of this cames from the
fact that I didn't take this very patch in my imutable branch for this change
...

I'll also resend a pull request, without this patch if that's good for you,
which will solve the breakage.

Cheers.

-- 
Robert


[PATCH] ARM: dts: pxa: change serial node names

2018-07-15 Thread Robert Jarzmik
Change from xxuart to serial to normalize the devicetree pxa serial
support.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index f609dbb86abf..a5f9efdd2361 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -95,7 +95,7 @@
};
};
 
-   ffuart: uart@4010 {
+   ffuart: serial@4010 {
compatible = "mrvl,pxa-uart";
reg = <0x4010 0x30>;
interrupts = <22>;
@@ -103,7 +103,7 @@
status = "disabled";
};
 
-   btuart: uart@4020 {
+   btuart: serial@4020 {
compatible = "mrvl,pxa-uart";
reg = <0x4020 0x30>;
interrupts = <21>;
@@ -111,7 +111,7 @@
status = "disabled";
};
 
-   stuart: uart@4070 {
+   stuart: serial@4070 {
compatible = "mrvl,pxa-uart";
reg = <0x4070 0x30>;
interrupts = <20>;
@@ -119,7 +119,7 @@
status = "disabled";
};
 
-   hwuart: uart@4110 {
+   hwuart: serial@4110 {
compatible = "mrvl,pxa-uart";
reg = <0x4110 0x30>;
interrupts = <7>;
-- 
2.11.0



[PATCH] ARM: dts: pxa: change serial node names

2018-07-15 Thread Robert Jarzmik
Change from xxuart to serial to normalize the devicetree pxa serial
support.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index f609dbb86abf..a5f9efdd2361 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -95,7 +95,7 @@
};
};
 
-   ffuart: uart@4010 {
+   ffuart: serial@4010 {
compatible = "mrvl,pxa-uart";
reg = <0x4010 0x30>;
interrupts = <22>;
@@ -103,7 +103,7 @@
status = "disabled";
};
 
-   btuart: uart@4020 {
+   btuart: serial@4020 {
compatible = "mrvl,pxa-uart";
reg = <0x4020 0x30>;
interrupts = <21>;
@@ -111,7 +111,7 @@
status = "disabled";
};
 
-   stuart: uart@4070 {
+   stuart: serial@4070 {
compatible = "mrvl,pxa-uart";
reg = <0x4070 0x30>;
interrupts = <20>;
@@ -119,7 +119,7 @@
status = "disabled";
};
 
-   hwuart: uart@4110 {
+   hwuart: serial@4110 {
compatible = "mrvl,pxa-uart";
reg = <0x4110 0x30>;
interrupts = <7>;
-- 
2.11.0



Re: [PATCH 2/2] ARM: dts: pxa: add mioa701 board description

2018-07-14 Thread Robert Jarzmik
Rob Herring  writes:

Hi Rob,

>> +   /* compatible = "mitac,mioa701"; */
>> +   compatible = "marvell,pxa270";
>
> Why the comment?
Leftover, I'll remove it.

>> +   pstore_region:region@0xa200 {
>
> Drop the 0x
Done.

>> +   compatible = 
>> "linux,contiguous-memory-region";
>> +   reg = <0xa200 1048576>;
>
> Use hex for the size.
Ok.

>> +   ffuart: uart@4010 {
>
> Should be "serial@...". You'll have to fix in the base dtsi.
Ok for all of these.
>> +   pxai2c1: i2c@40301680 {
>> +   mrvl,i2c-fast-mode;
>> +   pinctrl-names = "default";
>> +   pinctrl-0 = <_i2c_default>;
>> +   status = "okay";
>> +
>> +   mt9m111: camera@5d {
>> +   compatible = "micron,mt9m111";
>> +   reg = <0x5d>;
>> +   gpios = < 56 GPIO_ACTIVE_HIGH>;
>> +
>> +   remote = <_camera>;
>
> Not needed with the graph:
I don't understand that, do you mean the port node is not needed ?

>
>> +   port {
>> +   mt9m111_1: endpoint {
>> +   bus-width = <8>;
>> +   remote-endpoint = 
>> <_camera>;
>> +   };
>> +   };
>> +   };
>> +   };
>> +   gpio-keys {
>> +   compatible = "gpio-keys";
>> +   #address-cells = <1>;
>> +   #size-cells = <0>;
>> +   autorepeat;
>> +   pinctrl-names = "default";
>> +   pinctrl-0 = <_gpiokeys_default>;
>> +   status = "okay";
>
> Don't need status here? It shouldn't be defined in the base dtsi.
Heuh what ? The status is just above, and gpio-keys is not defined in any dtsi.

>> +
>> +   button@0 {
>
> If you have unit-address there should also be a reg property. Just
> drop and name the node 'power' or 'power-button'. And similarly for
> the rest.
Ok.

>> +
>> +   regulators {
>> +   compatible = "simple-bus";
>
> Drop this and move children to the top level. This is not an mmio bus.
Ok.

>> +   docg3: flash@0 {
>
> This probably should be a child of the bus controller.
Most certainly yes.

>
>> +   compatible = "m-systems,diskonchip-g3";
>> +   reg = <0x0 0x2000>;
>> +   };
>> +
>> +   panel {
>> +   compatible = "toshiba,ltm0305a776";
>> +   lcd-type = "color-tft";
>
> This should be implied by the compatible.
Mmm no. Actually, this is used by the framebuffer controller, ie. pxafb to set
it up. And I don't think adding a list of panel compatibles in pxafb is a good
idea.
The corresponding code is in : drivers/video/fbdev/pxafb.c, see
"static const char * const lcd_types[]".

>> +   display-timings {
>> +   native-mode = <>;
>
> We generally imply this from the compatible (i.e. use simple-panel).
But you suppose there is an actual driver for the panel, right ? But there is
none.

> Could use another level of indentation.
Sure.

>> +   ac_charger: charger@1 {
>
> Drop the unit-address.
Ok.

Thanks for the review.

-- 
Robert


Re: [PATCH 2/2] ARM: dts: pxa: add mioa701 board description

2018-07-14 Thread Robert Jarzmik
Rob Herring  writes:

Hi Rob,

>> +   /* compatible = "mitac,mioa701"; */
>> +   compatible = "marvell,pxa270";
>
> Why the comment?
Leftover, I'll remove it.

>> +   pstore_region:region@0xa200 {
>
> Drop the 0x
Done.

>> +   compatible = 
>> "linux,contiguous-memory-region";
>> +   reg = <0xa200 1048576>;
>
> Use hex for the size.
Ok.

>> +   ffuart: uart@4010 {
>
> Should be "serial@...". You'll have to fix in the base dtsi.
Ok for all of these.
>> +   pxai2c1: i2c@40301680 {
>> +   mrvl,i2c-fast-mode;
>> +   pinctrl-names = "default";
>> +   pinctrl-0 = <_i2c_default>;
>> +   status = "okay";
>> +
>> +   mt9m111: camera@5d {
>> +   compatible = "micron,mt9m111";
>> +   reg = <0x5d>;
>> +   gpios = < 56 GPIO_ACTIVE_HIGH>;
>> +
>> +   remote = <_camera>;
>
> Not needed with the graph:
I don't understand that, do you mean the port node is not needed ?

>
>> +   port {
>> +   mt9m111_1: endpoint {
>> +   bus-width = <8>;
>> +   remote-endpoint = 
>> <_camera>;
>> +   };
>> +   };
>> +   };
>> +   };
>> +   gpio-keys {
>> +   compatible = "gpio-keys";
>> +   #address-cells = <1>;
>> +   #size-cells = <0>;
>> +   autorepeat;
>> +   pinctrl-names = "default";
>> +   pinctrl-0 = <_gpiokeys_default>;
>> +   status = "okay";
>
> Don't need status here? It shouldn't be defined in the base dtsi.
Heuh what ? The status is just above, and gpio-keys is not defined in any dtsi.

>> +
>> +   button@0 {
>
> If you have unit-address there should also be a reg property. Just
> drop and name the node 'power' or 'power-button'. And similarly for
> the rest.
Ok.

>> +
>> +   regulators {
>> +   compatible = "simple-bus";
>
> Drop this and move children to the top level. This is not an mmio bus.
Ok.

>> +   docg3: flash@0 {
>
> This probably should be a child of the bus controller.
Most certainly yes.

>
>> +   compatible = "m-systems,diskonchip-g3";
>> +   reg = <0x0 0x2000>;
>> +   };
>> +
>> +   panel {
>> +   compatible = "toshiba,ltm0305a776";
>> +   lcd-type = "color-tft";
>
> This should be implied by the compatible.
Mmm no. Actually, this is used by the framebuffer controller, ie. pxafb to set
it up. And I don't think adding a list of panel compatibles in pxafb is a good
idea.
The corresponding code is in : drivers/video/fbdev/pxafb.c, see
"static const char * const lcd_types[]".

>> +   display-timings {
>> +   native-mode = <>;
>
> We generally imply this from the compatible (i.e. use simple-panel).
But you suppose there is an actual driver for the panel, right ? But there is
none.

> Could use another level of indentation.
Sure.

>> +   ac_charger: charger@1 {
>
> Drop the unit-address.
Ok.

Thanks for the review.

-- 
Robert


[PATCH v2 2/2] ARM: dts: pxa: add mioa701 board description

2018-07-07 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
Since v1: fix lcd_supply and lcd_backlight
  These were depending on my internal tree changes, fit it.

This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   1 +
 arch/arm/boot/dts/mioa701.dts | 564 ++
 2 files changed, 565 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 37a3de760d40..6b12ab50c8d1 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -756,6 +756,7 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..a6893226e20e
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,564 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   /* compatible = "mitac,mioa701"; */
+   compatible = "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@0xa200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 1048576>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+   PMMUX(gsm-is-on, 25, gpio_in);
+   PMMUX_

[PATCH v2 1/2] ARM: dts: pxa: add pincontrol helpers

2018-07-07 Thread Robert Jarzmik
Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
easier, and can be easily converted from old mfp mach-pxa code to
devicetree.

An example of such conversion would be :
static unsigned long mioa701_pin_config[] = {
GPIO32_MMC_CLK,
GPIO92_MMC_DAT_0,
GPIO109_MMC_DAT_1,
GPIO110_MMC_DAT_2,
GPIO111_MMC_DAT_3,
GPIO112_MMC_CMD,
MIO_CFG_IN(GPIO78_SDIO_RO, AF0),
MIO_CFG_IN(GPIO15_SDIO_INSERT, AF0),
MIO_CFG_OUT(GPIO91_SDIO_EN, AF0, DRIVE_LOW),
};
into:
pinctrl_mmc_default: mmc-default {
PMMUX(sd-insert, 15, gpio_in);
PMMUX(mmclk, 32, MMCLK);
PMMUX(sd-ro, 78, gpio_in);
PMMUX_LPM_LOW(sd-enable, 91, gpio_out);
PMMUX(mmdat0, 92, MMDAT<0>);
PMMUX(mmdat1, 109, MMDAT<1>);
PMMUX(mmdat2, 110, MMDAT<2>);
PMMUX(mmdat3, 111, MMDAT<3>);
PMMUX(mmcmd, 112, MMCMD);
};

The third column of PMMUX*() helpers can be found in pincontrol muxing
functions, either in pinctrl-pxa27x.c (or pinctrl-pxa25x.c), or by
inspecting the pincontrol once booted in debugfs.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index e4ebcde17837..f609dbb86abf 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -9,6 +9,25 @@
 #include "skeleton.dtsi"
 #include "dt-bindings/clock/pxa-clock.h"
 
+#define PMGROUP(pin) #pin
+#define PMMUX(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   }
+#define PMMUX_LPM_LOW(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-disable;  \
+   }
+#define PMMUX_LPM_HIGH(func, pin, af)  \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-enable;   \
+   }
+
 / {
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
-- 
2.11.0



[PATCH v2 1/2] ARM: dts: pxa: add pincontrol helpers

2018-07-07 Thread Robert Jarzmik
Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
easier, and can be easily converted from old mfp mach-pxa code to
devicetree.

An example of such conversion would be :
static unsigned long mioa701_pin_config[] = {
GPIO32_MMC_CLK,
GPIO92_MMC_DAT_0,
GPIO109_MMC_DAT_1,
GPIO110_MMC_DAT_2,
GPIO111_MMC_DAT_3,
GPIO112_MMC_CMD,
MIO_CFG_IN(GPIO78_SDIO_RO, AF0),
MIO_CFG_IN(GPIO15_SDIO_INSERT, AF0),
MIO_CFG_OUT(GPIO91_SDIO_EN, AF0, DRIVE_LOW),
};
into:
pinctrl_mmc_default: mmc-default {
PMMUX(sd-insert, 15, gpio_in);
PMMUX(mmclk, 32, MMCLK);
PMMUX(sd-ro, 78, gpio_in);
PMMUX_LPM_LOW(sd-enable, 91, gpio_out);
PMMUX(mmdat0, 92, MMDAT<0>);
PMMUX(mmdat1, 109, MMDAT<1>);
PMMUX(mmdat2, 110, MMDAT<2>);
PMMUX(mmdat3, 111, MMDAT<3>);
PMMUX(mmcmd, 112, MMCMD);
};

The third column of PMMUX*() helpers can be found in pincontrol muxing
functions, either in pinctrl-pxa27x.c (or pinctrl-pxa25x.c), or by
inspecting the pincontrol once booted in debugfs.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index e4ebcde17837..f609dbb86abf 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -9,6 +9,25 @@
 #include "skeleton.dtsi"
 #include "dt-bindings/clock/pxa-clock.h"
 
+#define PMGROUP(pin) #pin
+#define PMMUX(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   }
+#define PMMUX_LPM_LOW(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-disable;  \
+   }
+#define PMMUX_LPM_HIGH(func, pin, af)  \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-enable;   \
+   }
+
 / {
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
-- 
2.11.0



[PATCH v2 2/2] ARM: dts: pxa: add mioa701 board description

2018-07-07 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
Since v1: fix lcd_supply and lcd_backlight
  These were depending on my internal tree changes, fit it.

This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   1 +
 arch/arm/boot/dts/mioa701.dts | 564 ++
 2 files changed, 565 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 37a3de760d40..6b12ab50c8d1 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -756,6 +756,7 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..a6893226e20e
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,564 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   /* compatible = "mitac,mioa701"; */
+   compatible = "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@0xa200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 1048576>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+   PMMUX(gsm-is-on, 25, gpio_in);
+   PMMUX_

Re: [PATCH v4 1/2] clk: pxa: export 32kHz PLL

2018-07-07 Thread Robert Jarzmik
Stephen Boyd  writes:

> Quoting Robert Jarzmik (2018-07-04 22:34:10)
>> Robert Jarzmik  writes:
>> 
>> > This clock is especially used by the RTC driver, so export it so that
>> > devicetree users can use it.
>> >
>> > Signed-off-by: Robert Jarzmik 
>> > ---
>> > Since v2: fix missing parenthesis in clk-pxa25x.c and clk-pxa3xx.c
>> 
>> Hi Michael and Stephen,
>> 
>> Could you have a look please ?
>> 
>
> I'll apply patch 1, and leave patch 2 to someone else?
As there is a dependency of patch 2 on patch 1, and with the Reviewed-by
provided by Rob, I'd appreciate you take it as well. If not, I'll queue it up
for the next cycle in my pxa tree.

Cheers.

-- 
Robert


Re: [PATCH v4 1/2] clk: pxa: export 32kHz PLL

2018-07-07 Thread Robert Jarzmik
Stephen Boyd  writes:

> Quoting Robert Jarzmik (2018-07-04 22:34:10)
>> Robert Jarzmik  writes:
>> 
>> > This clock is especially used by the RTC driver, so export it so that
>> > devicetree users can use it.
>> >
>> > Signed-off-by: Robert Jarzmik 
>> > ---
>> > Since v2: fix missing parenthesis in clk-pxa25x.c and clk-pxa3xx.c
>> 
>> Hi Michael and Stephen,
>> 
>> Could you have a look please ?
>> 
>
> I'll apply patch 1, and leave patch 2 to someone else?
As there is a dependency of patch 2 on patch 1, and with the Reviewed-by
provided by Rob, I'd appreciate you take it as well. If not, I'll queue it up
for the next cycle in my pxa tree.

Cheers.

-- 
Robert


Re: linux-next: Tree for Jul 2 (sound/soc/pxa/)

2018-07-02 Thread Robert Jarzmik
Randy Dunlap  writes:
> [add other maintainers]
> on i386 or x86_64:
> 
> builtin:
> sound/soc/pxa/pxa-ssp.o:(.rodata+0x228): undefined reference to 
> `pxa2xx_soc_pcm_new'
> sound/soc/pxa/pxa-ssp.o:(.rodata+0x22c): undefined reference to 
> `pxa2xx_pcm_free_dma_buffers'
> sound/soc/pxa/pxa-ssp.o:(.rodata+0x250): undefined reference to 
> `pxa2xx_pcm_ops'

Hi Randy,

I think the fix is already queued in Mark's tree, the commit message should be
"ASoC: pxa: select SND_PXA2XX_LIB for drivers that depend on it".

Adding Daniel as he is the original author.

Cheers.

--
Robert


Re: linux-next: Tree for Jul 2 (sound/soc/pxa/)

2018-07-02 Thread Robert Jarzmik
Randy Dunlap  writes:
> [add other maintainers]
> on i386 or x86_64:
> 
> builtin:
> sound/soc/pxa/pxa-ssp.o:(.rodata+0x228): undefined reference to 
> `pxa2xx_soc_pcm_new'
> sound/soc/pxa/pxa-ssp.o:(.rodata+0x22c): undefined reference to 
> `pxa2xx_pcm_free_dma_buffers'
> sound/soc/pxa/pxa-ssp.o:(.rodata+0x250): undefined reference to 
> `pxa2xx_pcm_ops'

Hi Randy,

I think the fix is already queued in Mark's tree, the commit message should be
"ASoC: pxa: select SND_PXA2XX_LIB for drivers that depend on it".

Adding Daniel as he is the original author.

Cheers.

--
Robert


[PATCH 1/2] ARM: dts: pxa: add pincontrol helpers

2018-07-01 Thread Robert Jarzmik
Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
easier, and can be easily converted from old mfp mach-pxa code to
devicetree.

An example of such conversion would be :
static unsigned long mioa701_pin_config[] = {
GPIO32_MMC_CLK,
GPIO92_MMC_DAT_0,
GPIO109_MMC_DAT_1,
GPIO110_MMC_DAT_2,
GPIO111_MMC_DAT_3,
GPIO112_MMC_CMD,
MIO_CFG_IN(GPIO78_SDIO_RO, AF0),
MIO_CFG_IN(GPIO15_SDIO_INSERT, AF0),
MIO_CFG_OUT(GPIO91_SDIO_EN, AF0, DRIVE_LOW),
};
into:
pinctrl_mmc_default: mmc-default {
PMMUX(sd-insert, 15, gpio_in);
PMMUX(mmclk, 32, MMCLK);
PMMUX(sd-ro, 78, gpio_in);
PMMUX_LPM_LOW(sd-enable, 91, gpio_out);
PMMUX(mmdat0, 92, MMDAT<0>);
PMMUX(mmdat1, 109, MMDAT<1>);
PMMUX(mmdat2, 110, MMDAT<2>);
PMMUX(mmdat3, 111, MMDAT<3>);
PMMUX(mmcmd, 112, MMCMD);
};

The third column of PMMUX*() helpers can be found in pincontrol muxing
functions, either in pinctrl-pxa27x.c (or pinctrl-pxa25x.c), or by
inspecting the pincontrol once booted in debugfs.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index e4ebcde17837..f609dbb86abf 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -9,6 +9,25 @@
 #include "skeleton.dtsi"
 #include "dt-bindings/clock/pxa-clock.h"
 
+#define PMGROUP(pin) #pin
+#define PMMUX(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   }
+#define PMMUX_LPM_LOW(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-disable;  \
+   }
+#define PMMUX_LPM_HIGH(func, pin, af)  \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-enable;   \
+   }
+
 / {
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
-- 
2.11.0



[PATCH 2/2] ARM: dts: pxa: add mioa701 board description

2018-07-01 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   1 +
 arch/arm/boot/dts/mioa701.dts | 565 ++
 2 files changed, 566 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 37a3de760d40..6b12ab50c8d1 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -756,6 +756,7 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..680e0e44d526
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,565 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   /* compatible = "mitac,mioa701"; */
+   compatible = "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@0xa200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 1048576>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+   PMMUX(gsm-is-on, 25, gpio_in);
+   PMMUX_LPM_HIGH(gsm-nset-on, 88, gpio_out);
+   PMMUX_LPM_HIGH(gsm-nset-off, 90, gpio_out);
+

[PATCH 1/2] ARM: dts: pxa: add pincontrol helpers

2018-07-01 Thread Robert Jarzmik
Add 3 helpers so that pincontrol definitions for pxa25x and pxa27x are
easier, and can be easily converted from old mfp mach-pxa code to
devicetree.

An example of such conversion would be :
static unsigned long mioa701_pin_config[] = {
GPIO32_MMC_CLK,
GPIO92_MMC_DAT_0,
GPIO109_MMC_DAT_1,
GPIO110_MMC_DAT_2,
GPIO111_MMC_DAT_3,
GPIO112_MMC_CMD,
MIO_CFG_IN(GPIO78_SDIO_RO, AF0),
MIO_CFG_IN(GPIO15_SDIO_INSERT, AF0),
MIO_CFG_OUT(GPIO91_SDIO_EN, AF0, DRIVE_LOW),
};
into:
pinctrl_mmc_default: mmc-default {
PMMUX(sd-insert, 15, gpio_in);
PMMUX(mmclk, 32, MMCLK);
PMMUX(sd-ro, 78, gpio_in);
PMMUX_LPM_LOW(sd-enable, 91, gpio_out);
PMMUX(mmdat0, 92, MMDAT<0>);
PMMUX(mmdat1, 109, MMDAT<1>);
PMMUX(mmdat2, 110, MMDAT<2>);
PMMUX(mmdat3, 111, MMDAT<3>);
PMMUX(mmcmd, 112, MMCMD);
};

The third column of PMMUX*() helpers can be found in pincontrol muxing
functions, either in pinctrl-pxa27x.c (or pinctrl-pxa25x.c), or by
inspecting the pincontrol once booted in debugfs.

Signed-off-by: Robert Jarzmik 
---
 arch/arm/boot/dts/pxa2xx.dtsi | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index e4ebcde17837..f609dbb86abf 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -9,6 +9,25 @@
 #include "skeleton.dtsi"
 #include "dt-bindings/clock/pxa-clock.h"
 
+#define PMGROUP(pin) #pin
+#define PMMUX(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   }
+#define PMMUX_LPM_LOW(func, pin, af)   \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-disable;  \
+   }
+#define PMMUX_LPM_HIGH(func, pin, af)  \
+   mux- ## func {  \
+   groups = PMGROUP(P ## pin); \
+   function = #af; \
+   low-power-enable;   \
+   }
+
 / {
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
-- 
2.11.0



[PATCH 2/2] ARM: dts: pxa: add mioa701 board description

2018-07-01 Thread Robert Jarzmik
Add device-tree description of the Mitac MIO A701 board.
This is aimed at replacing mioa701.c board file, and once stabilized,
the leftover, such as the suspend resume mechanics will rely on a new
IPL, and not the legacy Windows CE one.

Signed-off-by: Robert Jarzmik 
---
This patch deserves some special "love review". As it will probably
serve for a more broad pxa conversion to devicetree of the other boards,
and because it touches almost all domains for a pxa platform (camera,
video, audio, i2c, ...), it should be as clean as possible so that
mistakes are not carried on ...

Therefore I expect the review of this one to be long (ie. it won't land
for v4.19), until it looks good enough.
---
 arch/arm/boot/dts/Makefile|   1 +
 arch/arm/boot/dts/mioa701.dts | 565 ++
 2 files changed, 566 insertions(+)
 create mode 100644 arch/arm/boot/dts/mioa701.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 37a3de760d40..6b12ab50c8d1 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -756,6 +756,7 @@ dtb-$(CONFIG_ARCH_PRIMA2) += \
 dtb-$(CONFIG_ARCH_OXNAS) += \
ox810se-wd-mbwe.dtb \
ox820-cloudengines-pogoplug-series-3.dtb
+dtb-$(CONFIG_ARCH_PXA) += mioa701.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-arrow-sd-600eval.dtb \
diff --git a/arch/arm/boot/dts/mioa701.dts b/arch/arm/boot/dts/mioa701.dts
new file mode 100644
index ..680e0e44d526
--- /dev/null
+++ b/arch/arm/boot/dts/mioa701.dts
@@ -0,0 +1,565 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2018 Robert Jarzmik 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "pxa27x.dtsi"
+#include 
+#include 
+
+/ {
+   model = "Mitac Mio A701 Board";
+   /* compatible = "mitac,mioa701"; */
+   compatible = "marvell,pxa270";
+
+   chosen {
+   bootargs = 
"mtdparts=docg3.0:256k@3456k(barebox)ro,256k(barebox-logo),128k(barebox-env),4M(kernel),-(root)
 ubi.mtd=4 rootfstype=ubifs root=ubi0:linux_root ro";
+   };
+
+   memory {
+   reg = <0xa000 0x0400>;
+
+   reserved-memory {
+   #address-cells = <1>;
+   #size-cells = <1>;
+
+   pstore_region:region@0xa200 {
+   compatible = "linux,contiguous-memory-region";
+   reg = <0xa200 1048576>;
+   };
+   };
+   };
+
+   cpus {
+   cpu {
+   cpu-supply = <_core>;
+   };
+   };
+
+   pxabus {
+   pinctrl: pinctrl@40e0 {
+   status = "okay";
+   pinctrl_ac97_default: ac97-default {
+   PMMUX(hpjack-detect, 12, gpio_in);
+   PMMUX(ac97-bitclk, 28, AC97_BITCLK);
+   PMMUX(ac97-sdata-in-0, 29, AC97_SDATA_IN_0);
+   PMMUX(ac97-sdata-out, 30, AC97_SDATA_OUT);
+   PMMUX(ac97-sync, 31, AC97_SYNC);
+   PMMUX(ac97-sysclk, 89, AC97_SYSCLK);
+   };
+   pinctrl_btuart_default: btuart-default {
+   PMMUX(btuart-nactivity, 14, gpio_in);
+   PMMUX(btuart-rxd, 42, BTRXD);
+   PMMUX(btuart-txd, 43, BTTXD);
+   PMMUX(btuart-cts, 44, BTCTS);
+   PMMUX(btuart-rts, 45, BTRTS);
+   PMMUX_LPM_LOW(bt-on, 83, gpio_out);
+   PMMUX_LPM_HIGH(bt-unknown, 77, gpio_out);
+   PMMUX_LPM_HIGH(bt-nreset, 86, gpio_out);
+   };
+   pinctrl_ffuart_default: ffuart-default {
+   PMMUX(ffuart-rxd, 34, FFRXD);
+   PMMUX(ffuart-cts, 35, FFCTS);
+   PMMUX(ffuart-dcd, 36, FFDCD);
+   PMMUX(ffuart-dsr, 37, FFDSR);
+   PMMUX(ffuart-txd, 39, FFTXD);
+   PMMUX(ffuart-dtr, 40, FFDTR);
+   PMMUX(ffuart-rts, 41, FFRTS);
+   PMMUX_LPM_LOW(gsm-reset, 24, gpio_out);
+   PMMUX(gsm-is-on, 25, gpio_in);
+   PMMUX_LPM_HIGH(gsm-nset-on, 88, gpio_out);
+   PMMUX_LPM_HIGH(gsm-nset-off, 90, gpio_out);
+

[PATCH v4 2/2] ARM: dts: pxa: fix the rtc controller

2018-06-27 Thread Robert Jarzmik
The RTC controller is fed by an external fixed 32kHz clock. Yet the
driver wants to acquire this clock, even though it doesn't make any use
of it, ie. doesn't get the rate to make calculation.

Therefore, use the exported 32.768kHz clock in the PXA clock tree to
make the driver happy and working.

Signed-off-by: Robert Jarzmik 
---
Since v1: change the dummy clock by the actual 32.768kHz
Since v3: remove spurious bracket
---
 arch/arm/boot/dts/pxa25x.dtsi | 4 
 arch/arm/boot/dts/pxa27x.dtsi | 4 
 2 files changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/pxa25x.dtsi b/arch/arm/boot/dts/pxa25x.dtsi
index 95d59be97213..8494b5787170 100644
--- a/arch/arm/boot/dts/pxa25x.dtsi
+++ b/arch/arm/boot/dts/pxa25x.dtsi
@@ -80,6 +80,10 @@
#pwm-cells = <1>;
clocks = < CLK_PWM1>;
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>;
+   };
};
 
timer@40a0 {
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 747f750f675d..2ab6986433c8 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -113,6 +113,10 @@
 
status = "disabled";
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>;
+   };
};
 
clocks {
-- 
2.11.0



[PATCH v4 2/2] ARM: dts: pxa: fix the rtc controller

2018-06-27 Thread Robert Jarzmik
The RTC controller is fed by an external fixed 32kHz clock. Yet the
driver wants to acquire this clock, even though it doesn't make any use
of it, ie. doesn't get the rate to make calculation.

Therefore, use the exported 32.768kHz clock in the PXA clock tree to
make the driver happy and working.

Signed-off-by: Robert Jarzmik 
---
Since v1: change the dummy clock by the actual 32.768kHz
Since v3: remove spurious bracket
---
 arch/arm/boot/dts/pxa25x.dtsi | 4 
 arch/arm/boot/dts/pxa27x.dtsi | 4 
 2 files changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/pxa25x.dtsi b/arch/arm/boot/dts/pxa25x.dtsi
index 95d59be97213..8494b5787170 100644
--- a/arch/arm/boot/dts/pxa25x.dtsi
+++ b/arch/arm/boot/dts/pxa25x.dtsi
@@ -80,6 +80,10 @@
#pwm-cells = <1>;
clocks = < CLK_PWM1>;
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>;
+   };
};
 
timer@40a0 {
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 747f750f675d..2ab6986433c8 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -113,6 +113,10 @@
 
status = "disabled";
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>;
+   };
};
 
clocks {
-- 
2.11.0



[PATCH v4 1/2] clk: pxa: export 32kHz PLL

2018-06-27 Thread Robert Jarzmik
This clock is especially used by the RTC driver, so export it so that
devicetree users can use it.

Signed-off-by: Robert Jarzmik 
---
Since v2: fix missing parenthesis in clk-pxa25x.c and clk-pxa3xx.c
---
 drivers/clk/pxa/clk-pxa25x.c  | 6 --
 drivers/clk/pxa/clk-pxa27x.c  | 7 ---
 drivers/clk/pxa/clk-pxa3xx.c  | 7 ---
 include/dt-bindings/clock/pxa-clock.h | 3 ++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/clk/pxa/clk-pxa25x.c b/drivers/clk/pxa/clk-pxa25x.c
index 6416c1f8e632..e88f8e01fe3a 100644
--- a/drivers/clk/pxa/clk-pxa25x.c
+++ b/drivers/clk/pxa/clk-pxa25x.c
@@ -292,8 +292,10 @@ static void __init pxa25x_register_plls(void)
 {
clk_register_fixed_rate(NULL, "osc_3_6864mhz", NULL,
CLK_GET_RATE_NOCACHE, 3686400);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE, 32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_95_85mhz", "osc_3_6864mhz",
  0, 26, 1);
diff --git a/drivers/clk/pxa/clk-pxa27x.c b/drivers/clk/pxa/clk-pxa27x.c
index 25a30194d27a..d40b63e7bbce 100644
--- a/drivers/clk/pxa/clk-pxa27x.c
+++ b/drivers/clk/pxa/clk-pxa27x.c
@@ -314,9 +314,10 @@ static void __init pxa27x_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768 * KHz);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768 * KHz));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_312mhz", "osc_13mhz", 0, 24, 1);
 }
diff --git a/drivers/clk/pxa/clk-pxa3xx.c b/drivers/clk/pxa/clk-pxa3xx.c
index 2d126df2bccd..7aa120c3bd08 100644
--- a/drivers/clk/pxa/clk-pxa3xx.c
+++ b/drivers/clk/pxa/clk-pxa3xx.c
@@ -286,9 +286,10 @@ static void __init pxa3xx_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "ring_osc_120mhz", NULL,
CLK_GET_RATE_NOCACHE,
120 * MHz);
diff --git a/include/dt-bindings/clock/pxa-clock.h 
b/include/dt-bindings/clock/pxa-clock.h
index e65803b1dc7e..0b0fd2b01538 100644
--- a/include/dt-bindings/clock/pxa-clock.h
+++ b/include/dt-bindings/clock/pxa-clock.h
@@ -72,6 +72,7 @@
 #define CLK_USIM 58
 #define CLK_USIM1 59
 #define CLK_USMI0 60
-#define CLK_MAX 61
+#define CLK_OSC32k768 61
+#define CLK_MAX 62
 
 #endif
-- 
2.11.0



[PATCH v4 1/2] clk: pxa: export 32kHz PLL

2018-06-27 Thread Robert Jarzmik
This clock is especially used by the RTC driver, so export it so that
devicetree users can use it.

Signed-off-by: Robert Jarzmik 
---
Since v2: fix missing parenthesis in clk-pxa25x.c and clk-pxa3xx.c
---
 drivers/clk/pxa/clk-pxa25x.c  | 6 --
 drivers/clk/pxa/clk-pxa27x.c  | 7 ---
 drivers/clk/pxa/clk-pxa3xx.c  | 7 ---
 include/dt-bindings/clock/pxa-clock.h | 3 ++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/clk/pxa/clk-pxa25x.c b/drivers/clk/pxa/clk-pxa25x.c
index 6416c1f8e632..e88f8e01fe3a 100644
--- a/drivers/clk/pxa/clk-pxa25x.c
+++ b/drivers/clk/pxa/clk-pxa25x.c
@@ -292,8 +292,10 @@ static void __init pxa25x_register_plls(void)
 {
clk_register_fixed_rate(NULL, "osc_3_6864mhz", NULL,
CLK_GET_RATE_NOCACHE, 3686400);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE, 32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_95_85mhz", "osc_3_6864mhz",
  0, 26, 1);
diff --git a/drivers/clk/pxa/clk-pxa27x.c b/drivers/clk/pxa/clk-pxa27x.c
index 25a30194d27a..d40b63e7bbce 100644
--- a/drivers/clk/pxa/clk-pxa27x.c
+++ b/drivers/clk/pxa/clk-pxa27x.c
@@ -314,9 +314,10 @@ static void __init pxa27x_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768 * KHz);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768 * KHz));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_312mhz", "osc_13mhz", 0, 24, 1);
 }
diff --git a/drivers/clk/pxa/clk-pxa3xx.c b/drivers/clk/pxa/clk-pxa3xx.c
index 2d126df2bccd..7aa120c3bd08 100644
--- a/drivers/clk/pxa/clk-pxa3xx.c
+++ b/drivers/clk/pxa/clk-pxa3xx.c
@@ -286,9 +286,10 @@ static void __init pxa3xx_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "ring_osc_120mhz", NULL,
CLK_GET_RATE_NOCACHE,
120 * MHz);
diff --git a/include/dt-bindings/clock/pxa-clock.h 
b/include/dt-bindings/clock/pxa-clock.h
index e65803b1dc7e..0b0fd2b01538 100644
--- a/include/dt-bindings/clock/pxa-clock.h
+++ b/include/dt-bindings/clock/pxa-clock.h
@@ -72,6 +72,7 @@
 #define CLK_USIM 58
 #define CLK_USIM1 59
 #define CLK_USMI0 60
-#define CLK_MAX 61
+#define CLK_OSC32k768 61
+#define CLK_MAX 62
 
 #endif
-- 
2.11.0



Re: [PATCH v3 2/2] ARM: dts: pxa: fix the rtc controller

2018-06-27 Thread Robert Jarzmik
Thomas Petazzoni  writes:

> Hello,
>> +rtc@4090 {
>> +clocks = < CLK_OSC32k768>>;
>
> Double closing bracket, doesn't look good.

Rrrr you're right ... I swear this patchset is cursed ...

Thanks for spotting that, I'll send a v4.

Cheers.

-- 
Robert


Re: [PATCH v3 2/2] ARM: dts: pxa: fix the rtc controller

2018-06-27 Thread Robert Jarzmik
Thomas Petazzoni  writes:

> Hello,
>> +rtc@4090 {
>> +clocks = < CLK_OSC32k768>>;
>
> Double closing bracket, doesn't look good.

Rrrr you're right ... I swear this patchset is cursed ...

Thanks for spotting that, I'll send a v4.

Cheers.

-- 
Robert


Re: [PATCH v3 00/14] ARM: pxa: switch to DMA slave maps

2018-06-27 Thread Robert Jarzmik
Mark Brown  writes:

> On Mon, Jun 18, 2018 at 09:56:20PM +0200, Robert Jarzmik wrote:
>
>> I must insist on "Wednesday", as I need to have one last pass from 0-day 
>> kernel
>> checker to be fully covered, and I'd like as well to know which tree the ASoC
>> patch will take, ie. if Mark commits to take it, or rather wants to pull from
>> the imutable branch.
>
> I'll pull the branch in (a signed tag would've been nicer but it's not
> the end of the world).
Yeah, I realised that too ... late.

Anyways, the immutable branch doesn't contain the specific ASoC patch "ASoC:
pxa: remove the dmaengine compat need", and up to my better understanding
neither does your for-next branch.

So until I see it in your branch it will dwelve happily in pxa/for-next. If it
has to be routed through your tree, so that Daniel can work on ASoC pxa, I'd
like to know at -rc4 time so that I drop it from my pxa/for-next branch.

Cheers.

-- 
Robert


Re: [PATCH v3 00/14] ARM: pxa: switch to DMA slave maps

2018-06-27 Thread Robert Jarzmik
Mark Brown  writes:

> On Mon, Jun 18, 2018 at 09:56:20PM +0200, Robert Jarzmik wrote:
>
>> I must insist on "Wednesday", as I need to have one last pass from 0-day 
>> kernel
>> checker to be fully covered, and I'd like as well to know which tree the ASoC
>> patch will take, ie. if Mark commits to take it, or rather wants to pull from
>> the imutable branch.
>
> I'll pull the branch in (a signed tag would've been nicer but it's not
> the end of the world).
Yeah, I realised that too ... late.

Anyways, the immutable branch doesn't contain the specific ASoC patch "ASoC:
pxa: remove the dmaengine compat need", and up to my better understanding
neither does your for-next branch.

So until I see it in your branch it will dwelve happily in pxa/for-next. If it
has to be routed through your tree, so that Daniel can work on ASoC pxa, I'd
like to know at -rc4 time so that I drop it from my pxa/for-next branch.

Cheers.

-- 
Robert


[PATCH v3 2/2] ARM: dts: pxa: fix the rtc controller

2018-06-27 Thread Robert Jarzmik
The RTC controller is fed by an external fixed 32kHz clock. Yet the
driver wants to acquire this clock, even though it doesn't make any use
of it, ie. doesn't get the rate to make calculation.

Therefore, use the exported 32.768kHz clock in the PXA clock tree to
make the driver happy and working.

Signed-off-by: Robert Jarzmik 
---
Since v1: change the dummy clock by the actual 32.768kHz
---
 arch/arm/boot/dts/pxa25x.dtsi | 4 
 arch/arm/boot/dts/pxa27x.dtsi | 4 
 2 files changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/pxa25x.dtsi b/arch/arm/boot/dts/pxa25x.dtsi
index 95d59be97213..78a413ea0e88 100644
--- a/arch/arm/boot/dts/pxa25x.dtsi
+++ b/arch/arm/boot/dts/pxa25x.dtsi
@@ -80,6 +80,10 @@
#pwm-cells = <1>;
clocks = < CLK_PWM1>;
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>>;
+   };
};
 
timer@40a0 {
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 747f750f675d..2ab6986433c8 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -113,6 +113,10 @@
 
status = "disabled";
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>;
+   };
};
 
clocks {
-- 
2.11.0



[PATCH v3 2/2] ARM: dts: pxa: fix the rtc controller

2018-06-27 Thread Robert Jarzmik
The RTC controller is fed by an external fixed 32kHz clock. Yet the
driver wants to acquire this clock, even though it doesn't make any use
of it, ie. doesn't get the rate to make calculation.

Therefore, use the exported 32.768kHz clock in the PXA clock tree to
make the driver happy and working.

Signed-off-by: Robert Jarzmik 
---
Since v1: change the dummy clock by the actual 32.768kHz
---
 arch/arm/boot/dts/pxa25x.dtsi | 4 
 arch/arm/boot/dts/pxa27x.dtsi | 4 
 2 files changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/pxa25x.dtsi b/arch/arm/boot/dts/pxa25x.dtsi
index 95d59be97213..78a413ea0e88 100644
--- a/arch/arm/boot/dts/pxa25x.dtsi
+++ b/arch/arm/boot/dts/pxa25x.dtsi
@@ -80,6 +80,10 @@
#pwm-cells = <1>;
clocks = < CLK_PWM1>;
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>>;
+   };
};
 
timer@40a0 {
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 747f750f675d..2ab6986433c8 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -113,6 +113,10 @@
 
status = "disabled";
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>;
+   };
};
 
clocks {
-- 
2.11.0



[PATCH v3 1/2] clk: pxa: export 32kHz PLL

2018-06-27 Thread Robert Jarzmik
This clock is especially used by the RTC driver, so export it so that
devicetree users can use it.

Signed-off-by: Robert Jarzmik 
---
Since v2: fix missing parenthesis in clk-pxa25x.c and clk-pxa3xx.c
---
 drivers/clk/pxa/clk-pxa25x.c  | 6 --
 drivers/clk/pxa/clk-pxa27x.c  | 7 ---
 drivers/clk/pxa/clk-pxa3xx.c  | 7 ---
 include/dt-bindings/clock/pxa-clock.h | 3 ++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/clk/pxa/clk-pxa25x.c b/drivers/clk/pxa/clk-pxa25x.c
index 6416c1f8e632..e88f8e01fe3a 100644
--- a/drivers/clk/pxa/clk-pxa25x.c
+++ b/drivers/clk/pxa/clk-pxa25x.c
@@ -292,8 +292,10 @@ static void __init pxa25x_register_plls(void)
 {
clk_register_fixed_rate(NULL, "osc_3_6864mhz", NULL,
CLK_GET_RATE_NOCACHE, 3686400);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE, 32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_95_85mhz", "osc_3_6864mhz",
  0, 26, 1);
diff --git a/drivers/clk/pxa/clk-pxa27x.c b/drivers/clk/pxa/clk-pxa27x.c
index 25a30194d27a..d40b63e7bbce 100644
--- a/drivers/clk/pxa/clk-pxa27x.c
+++ b/drivers/clk/pxa/clk-pxa27x.c
@@ -314,9 +314,10 @@ static void __init pxa27x_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768 * KHz);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768 * KHz));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_312mhz", "osc_13mhz", 0, 24, 1);
 }
diff --git a/drivers/clk/pxa/clk-pxa3xx.c b/drivers/clk/pxa/clk-pxa3xx.c
index 2d126df2bccd..7aa120c3bd08 100644
--- a/drivers/clk/pxa/clk-pxa3xx.c
+++ b/drivers/clk/pxa/clk-pxa3xx.c
@@ -286,9 +286,10 @@ static void __init pxa3xx_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "ring_osc_120mhz", NULL,
CLK_GET_RATE_NOCACHE,
120 * MHz);
diff --git a/include/dt-bindings/clock/pxa-clock.h 
b/include/dt-bindings/clock/pxa-clock.h
index e65803b1dc7e..0b0fd2b01538 100644
--- a/include/dt-bindings/clock/pxa-clock.h
+++ b/include/dt-bindings/clock/pxa-clock.h
@@ -72,6 +72,7 @@
 #define CLK_USIM 58
 #define CLK_USIM1 59
 #define CLK_USMI0 60
-#define CLK_MAX 61
+#define CLK_OSC32k768 61
+#define CLK_MAX 62
 
 #endif
-- 
2.11.0



[PATCH v3 1/2] clk: pxa: export 32kHz PLL

2018-06-27 Thread Robert Jarzmik
This clock is especially used by the RTC driver, so export it so that
devicetree users can use it.

Signed-off-by: Robert Jarzmik 
---
Since v2: fix missing parenthesis in clk-pxa25x.c and clk-pxa3xx.c
---
 drivers/clk/pxa/clk-pxa25x.c  | 6 --
 drivers/clk/pxa/clk-pxa27x.c  | 7 ---
 drivers/clk/pxa/clk-pxa3xx.c  | 7 ---
 include/dt-bindings/clock/pxa-clock.h | 3 ++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/clk/pxa/clk-pxa25x.c b/drivers/clk/pxa/clk-pxa25x.c
index 6416c1f8e632..e88f8e01fe3a 100644
--- a/drivers/clk/pxa/clk-pxa25x.c
+++ b/drivers/clk/pxa/clk-pxa25x.c
@@ -292,8 +292,10 @@ static void __init pxa25x_register_plls(void)
 {
clk_register_fixed_rate(NULL, "osc_3_6864mhz", NULL,
CLK_GET_RATE_NOCACHE, 3686400);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE, 32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_95_85mhz", "osc_3_6864mhz",
  0, 26, 1);
diff --git a/drivers/clk/pxa/clk-pxa27x.c b/drivers/clk/pxa/clk-pxa27x.c
index 25a30194d27a..d40b63e7bbce 100644
--- a/drivers/clk/pxa/clk-pxa27x.c
+++ b/drivers/clk/pxa/clk-pxa27x.c
@@ -314,9 +314,10 @@ static void __init pxa27x_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768 * KHz);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768 * KHz));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_312mhz", "osc_13mhz", 0, 24, 1);
 }
diff --git a/drivers/clk/pxa/clk-pxa3xx.c b/drivers/clk/pxa/clk-pxa3xx.c
index 2d126df2bccd..7aa120c3bd08 100644
--- a/drivers/clk/pxa/clk-pxa3xx.c
+++ b/drivers/clk/pxa/clk-pxa3xx.c
@@ -286,9 +286,10 @@ static void __init pxa3xx_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768));
clk_register_fixed_rate(NULL, "ring_osc_120mhz", NULL,
CLK_GET_RATE_NOCACHE,
120 * MHz);
diff --git a/include/dt-bindings/clock/pxa-clock.h 
b/include/dt-bindings/clock/pxa-clock.h
index e65803b1dc7e..0b0fd2b01538 100644
--- a/include/dt-bindings/clock/pxa-clock.h
+++ b/include/dt-bindings/clock/pxa-clock.h
@@ -72,6 +72,7 @@
 #define CLK_USIM 58
 #define CLK_USIM1 59
 #define CLK_USMI0 60
-#define CLK_MAX 61
+#define CLK_OSC32k768 61
+#define CLK_MAX 62
 
 #endif
-- 
2.11.0



Re: [PATCH v2 1/2] clk: pxa: export 32kHz PLL

2018-06-27 Thread Robert Jarzmik
kbuild test robot  writes:

> All errors (new ones prefixed by >>):
>
>drivers/clk/pxa/clk-pxa25x.c: In function 'pxa25x_register_plls':
>>> drivers/clk/pxa/clk-pxa25x.c:298:17: error: expected ')' before ';' token
>   32768);
> ^
>>> drivers/clk/pxa/clk-pxa25x.c:304:1: error: expected ';' before '}' token
> }
Meh a missing closing parenthesis ... I'll send a v3.

Cheers.

--
Robert


Re: [PATCH v2 1/2] clk: pxa: export 32kHz PLL

2018-06-27 Thread Robert Jarzmik
kbuild test robot  writes:

> All errors (new ones prefixed by >>):
>
>drivers/clk/pxa/clk-pxa25x.c: In function 'pxa25x_register_plls':
>>> drivers/clk/pxa/clk-pxa25x.c:298:17: error: expected ')' before ';' token
>   32768);
> ^
>>> drivers/clk/pxa/clk-pxa25x.c:304:1: error: expected ';' before '}' token
> }
Meh a missing closing parenthesis ... I'll send a v3.

Cheers.

--
Robert


[PATCH v2 1/2] clk: pxa: export 32kHz PLL

2018-06-26 Thread Robert Jarzmik
This clock is especially used by the RTC driver, so export it so that
devicetree users can use it.

Signed-off-by: Robert Jarzmik 
---
 drivers/clk/pxa/clk-pxa25x.c  | 6 --
 drivers/clk/pxa/clk-pxa27x.c  | 7 ---
 drivers/clk/pxa/clk-pxa3xx.c  | 7 ---
 include/dt-bindings/clock/pxa-clock.h | 3 ++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/clk/pxa/clk-pxa25x.c b/drivers/clk/pxa/clk-pxa25x.c
index 6416c1f8e632..c0e7c74ebd7b 100644
--- a/drivers/clk/pxa/clk-pxa25x.c
+++ b/drivers/clk/pxa/clk-pxa25x.c
@@ -292,8 +292,10 @@ static void __init pxa25x_register_plls(void)
 {
clk_register_fixed_rate(NULL, "osc_3_6864mhz", NULL,
CLK_GET_RATE_NOCACHE, 3686400);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE, 32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768);
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_95_85mhz", "osc_3_6864mhz",
  0, 26, 1);
diff --git a/drivers/clk/pxa/clk-pxa27x.c b/drivers/clk/pxa/clk-pxa27x.c
index 25a30194d27a..d40b63e7bbce 100644
--- a/drivers/clk/pxa/clk-pxa27x.c
+++ b/drivers/clk/pxa/clk-pxa27x.c
@@ -314,9 +314,10 @@ static void __init pxa27x_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768 * KHz);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768 * KHz));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_312mhz", "osc_13mhz", 0, 24, 1);
 }
diff --git a/drivers/clk/pxa/clk-pxa3xx.c b/drivers/clk/pxa/clk-pxa3xx.c
index 2d126df2bccd..814b651c0504 100644
--- a/drivers/clk/pxa/clk-pxa3xx.c
+++ b/drivers/clk/pxa/clk-pxa3xx.c
@@ -286,9 +286,10 @@ static void __init pxa3xx_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768);
clk_register_fixed_rate(NULL, "ring_osc_120mhz", NULL,
CLK_GET_RATE_NOCACHE,
120 * MHz);
diff --git a/include/dt-bindings/clock/pxa-clock.h 
b/include/dt-bindings/clock/pxa-clock.h
index e65803b1dc7e..0b0fd2b01538 100644
--- a/include/dt-bindings/clock/pxa-clock.h
+++ b/include/dt-bindings/clock/pxa-clock.h
@@ -72,6 +72,7 @@
 #define CLK_USIM 58
 #define CLK_USIM1 59
 #define CLK_USMI0 60
-#define CLK_MAX 61
+#define CLK_OSC32k768 61
+#define CLK_MAX 62
 
 #endif
-- 
2.11.0



[PATCH v2 2/2] ARM: dts: pxa: fix the rtc controller

2018-06-26 Thread Robert Jarzmik
The RTC controller is fed by an external fixed 32kHz clock. Yet the
driver wants to acquire this clock, even though it doesn't make any use
of it, ie. doesn't get the rate to make calculation.

Therefore, use the exported 32.768kHz clock in the PXA clock tree to
make the driver happy and working.

Signed-off-by: Robert Jarzmik 
---
Since v1: change the dummy clock by the actual 32.768kHz
---
 arch/arm/boot/dts/pxa25x.dtsi | 4 
 arch/arm/boot/dts/pxa27x.dtsi | 4 
 2 files changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/pxa25x.dtsi b/arch/arm/boot/dts/pxa25x.dtsi
index 95d59be97213..78a413ea0e88 100644
--- a/arch/arm/boot/dts/pxa25x.dtsi
+++ b/arch/arm/boot/dts/pxa25x.dtsi
@@ -80,6 +80,10 @@
#pwm-cells = <1>;
clocks = < CLK_PWM1>;
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>>;
+   };
};
 
timer@40a0 {
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index 747f750f675d..2ab6986433c8 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -113,6 +113,10 @@
 
status = "disabled";
};
+
+   rtc@4090 {
+   clocks = < CLK_OSC32k768>;
+   };
};
 
clocks {
-- 
2.11.0



[PATCH v2 1/2] clk: pxa: export 32kHz PLL

2018-06-26 Thread Robert Jarzmik
This clock is especially used by the RTC driver, so export it so that
devicetree users can use it.

Signed-off-by: Robert Jarzmik 
---
 drivers/clk/pxa/clk-pxa25x.c  | 6 --
 drivers/clk/pxa/clk-pxa27x.c  | 7 ---
 drivers/clk/pxa/clk-pxa3xx.c  | 7 ---
 include/dt-bindings/clock/pxa-clock.h | 3 ++-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/clk/pxa/clk-pxa25x.c b/drivers/clk/pxa/clk-pxa25x.c
index 6416c1f8e632..c0e7c74ebd7b 100644
--- a/drivers/clk/pxa/clk-pxa25x.c
+++ b/drivers/clk/pxa/clk-pxa25x.c
@@ -292,8 +292,10 @@ static void __init pxa25x_register_plls(void)
 {
clk_register_fixed_rate(NULL, "osc_3_6864mhz", NULL,
CLK_GET_RATE_NOCACHE, 3686400);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE, 32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768);
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_95_85mhz", "osc_3_6864mhz",
  0, 26, 1);
diff --git a/drivers/clk/pxa/clk-pxa27x.c b/drivers/clk/pxa/clk-pxa27x.c
index 25a30194d27a..d40b63e7bbce 100644
--- a/drivers/clk/pxa/clk-pxa27x.c
+++ b/drivers/clk/pxa/clk-pxa27x.c
@@ -314,9 +314,10 @@ static void __init pxa27x_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768 * KHz);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768 * KHz));
clk_register_fixed_rate(NULL, "clk_dummy", NULL, 0, 0);
clk_register_fixed_factor(NULL, "ppll_312mhz", "osc_13mhz", 0, 24, 1);
 }
diff --git a/drivers/clk/pxa/clk-pxa3xx.c b/drivers/clk/pxa/clk-pxa3xx.c
index 2d126df2bccd..814b651c0504 100644
--- a/drivers/clk/pxa/clk-pxa3xx.c
+++ b/drivers/clk/pxa/clk-pxa3xx.c
@@ -286,9 +286,10 @@ static void __init pxa3xx_register_plls(void)
clk_register_fixed_rate(NULL, "osc_13mhz", NULL,
CLK_GET_RATE_NOCACHE,
13 * MHz);
-   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
-   CLK_GET_RATE_NOCACHE,
-   32768);
+   clkdev_pxa_register(CLK_OSC32k768, "osc_32_768khz", NULL,
+   clk_register_fixed_rate(NULL, "osc_32_768khz", NULL,
+   CLK_GET_RATE_NOCACHE,
+   32768);
clk_register_fixed_rate(NULL, "ring_osc_120mhz", NULL,
CLK_GET_RATE_NOCACHE,
120 * MHz);
diff --git a/include/dt-bindings/clock/pxa-clock.h 
b/include/dt-bindings/clock/pxa-clock.h
index e65803b1dc7e..0b0fd2b01538 100644
--- a/include/dt-bindings/clock/pxa-clock.h
+++ b/include/dt-bindings/clock/pxa-clock.h
@@ -72,6 +72,7 @@
 #define CLK_USIM 58
 #define CLK_USIM1 59
 #define CLK_USMI0 60
-#define CLK_MAX 61
+#define CLK_OSC32k768 61
+#define CLK_MAX 62
 
 #endif
-- 
2.11.0



  1   2   3   4   5   6   7   8   9   10   >