Commit b55353e2 authored by David S. Miller's avatar David S. Miller

Merge branch 'nfc-s3fwrn5-Few-cleanups'

Krzysztof Kozlowski says:

====================
nfc: s3fwrn5: Few cleanups

Changes since v2:
1. Fix dtschema ID after rename (patch 1/8).
2. Apply patch 9/9 (defconfig change).

Changes since v1:
1. Rename dtschema file and add additionalProperties:false, as Rob
   suggested,
2. Add Marek's tested-by,
3. New patches: #4, #5, #6, #7 and #9.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 3fe6ab12 0760aad0
...@@ -191,6 +191,10 @@ N: Krishna Balasubramanian ...@@ -191,6 +191,10 @@ N: Krishna Balasubramanian
E: balasub@cis.ohio-state.edu E: balasub@cis.ohio-state.edu
D: Wrote SYS V IPC (part of standard kernel since 0.99.10) D: Wrote SYS V IPC (part of standard kernel since 0.99.10)
B: Robert Baldyga
E: r.baldyga@hackerion.com
D: Samsung S3FWRN5 NCI NFC Controller
N: Chris Ball N: Chris Ball
E: chris@printf.net E: chris@printf.net
D: Former maintainer of the MMC/SD/SDIO subsystem. D: Former maintainer of the MMC/SD/SDIO subsystem.
......
* Samsung S3FWRN5 NCI NFC Controller
Required properties:
- compatible: Should be "samsung,s3fwrn5-i2c".
- reg: address on the bus
- interrupts: GPIO interrupt to which the chip is connected
- s3fwrn5,en-gpios: Output GPIO pin used for enabling/disabling the chip
- s3fwrn5,fw-gpios: Output GPIO pin used to enter firmware mode and
sleep/wakeup control
Example:
&hsi2c_4 {
s3fwrn5@27 {
compatible = "samsung,s3fwrn5-i2c";
reg = <0x27>;
interrupt-parent = <&gpa1>;
interrupts = <3 0 0>;
s3fwrn5,en-gpios = <&gpf1 4 0>;
s3fwrn5,fw-gpios = <&gpj0 2 0>;
};
};
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/nfc/samsung,s3fwrn5.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung S3FWRN5 NCI NFC Controller
maintainers:
- Krzysztof Kozlowski <krzk@kernel.org>
- Krzysztof Opasiak <k.opasiak@samsung.com>
properties:
compatible:
const: samsung,s3fwrn5-i2c
en-gpios:
maxItems: 1
description:
Output GPIO pin used for enabling/disabling the chip
interrupts:
maxItems: 1
reg:
maxItems: 1
wake-gpios:
maxItems: 1
description:
Output GPIO pin used to enter firmware mode and sleep/wakeup control
s3fwrn5,en-gpios:
maxItems: 1
deprecated: true
description:
Use en-gpios
s3fwrn5,fw-gpios:
maxItems: 1
deprecated: true
description:
Use wake-gpios
additionalProperties: false
required:
- compatible
- en-gpios
- interrupts
- reg
- wake-gpios
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c4 {
#address-cells = <1>;
#size-cells = <0>;
s3fwrn5@27 {
compatible = "samsung,s3fwrn5-i2c";
reg = <0x27>;
interrupt-parent = <&gpa1>;
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
en-gpios = <&gpf1 4 GPIO_ACTIVE_HIGH>;
wake-gpios = <&gpj0 2 GPIO_ACTIVE_HIGH>;
};
};
...@@ -15292,10 +15292,11 @@ F: drivers/media/platform/s3c-camif/ ...@@ -15292,10 +15292,11 @@ F: drivers/media/platform/s3c-camif/
F: include/media/drv-intf/s3c_camif.h F: include/media/drv-intf/s3c_camif.h
SAMSUNG S3FWRN5 NFC DRIVER SAMSUNG S3FWRN5 NFC DRIVER
M: Robert Baldyga <r.baldyga@samsung.com> M: Krzysztof Kozlowski <krzk@kernel.org>
M: Krzysztof Opasiak <k.opasiak@samsung.com> M: Krzysztof Opasiak <k.opasiak@samsung.com>
L: linux-nfc@lists.01.org (moderated for non-subscribers) L: linux-nfc@lists.01.org (moderated for non-subscribers)
S: Supported S: Maintained
F: Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml
F: drivers/nfc/s3fwrn5 F: drivers/nfc/s3fwrn5
SAMSUNG S5C73M3 CAMERA DRIVER SAMSUNG S5C73M3 CAMERA DRIVER
......
...@@ -795,8 +795,8 @@ s3fwrn5: nfc@27 { ...@@ -795,8 +795,8 @@ s3fwrn5: nfc@27 {
reg = <0x27>; reg = <0x27>;
interrupt-parent = <&gpa1>; interrupt-parent = <&gpa1>;
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
s3fwrn5,en-gpios = <&gpf1 4 GPIO_ACTIVE_HIGH>; en-gpios = <&gpf1 4 GPIO_ACTIVE_HIGH>;
s3fwrn5,fw-gpios = <&gpj0 2 GPIO_ACTIVE_HIGH>; wake-gpios = <&gpj0 2 GPIO_ACTIVE_HIGH>;
}; };
}; };
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
config NFC_S3FWRN5 config NFC_S3FWRN5
tristate tristate
select CRYPTO select CRYPTO
select CRYPTO_HASH
help help
Core driver for Samsung S3FWRN5 NFC chip. Contains core utilities Core driver for Samsung S3FWRN5 NFC chip. Contains core utilities
of chip. It's intended to be used by PHYs to avoid duplicating lots of chip. It's intended to be used by PHYs to avoid duplicating lots
......
...@@ -348,7 +348,7 @@ static int s3fwrn5_fw_get_base_addr( ...@@ -348,7 +348,7 @@ static int s3fwrn5_fw_get_base_addr(
} }
static inline bool static inline bool
s3fwrn5_fw_is_custom(struct s3fwrn5_fw_cmd_get_bootinfo_rsp *bootinfo) s3fwrn5_fw_is_custom(const struct s3fwrn5_fw_cmd_get_bootinfo_rsp *bootinfo)
{ {
return !!bootinfo->hw_version[2]; return !!bootinfo->hw_version[2];
} }
...@@ -399,7 +399,7 @@ int s3fwrn5_fw_setup(struct s3fwrn5_fw_info *fw_info) ...@@ -399,7 +399,7 @@ int s3fwrn5_fw_setup(struct s3fwrn5_fw_info *fw_info)
return ret; return ret;
} }
bool s3fwrn5_fw_check_version(struct s3fwrn5_fw_info *fw_info, u32 version) bool s3fwrn5_fw_check_version(const struct s3fwrn5_fw_info *fw_info, u32 version)
{ {
struct s3fwrn5_fw_version *new = (void *) &fw_info->fw.version; struct s3fwrn5_fw_version *new = (void *) &fw_info->fw.version;
struct s3fwrn5_fw_version *old = (void *) &version; struct s3fwrn5_fw_version *old = (void *) &version;
......
...@@ -91,7 +91,7 @@ struct s3fwrn5_fw_info { ...@@ -91,7 +91,7 @@ struct s3fwrn5_fw_info {
void s3fwrn5_fw_init(struct s3fwrn5_fw_info *fw_info, const char *fw_name); void s3fwrn5_fw_init(struct s3fwrn5_fw_info *fw_info, const char *fw_name);
int s3fwrn5_fw_setup(struct s3fwrn5_fw_info *fw_info); int s3fwrn5_fw_setup(struct s3fwrn5_fw_info *fw_info);
bool s3fwrn5_fw_check_version(struct s3fwrn5_fw_info *fw_info, u32 version); bool s3fwrn5_fw_check_version(const struct s3fwrn5_fw_info *fw_info, u32 version);
int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info); int s3fwrn5_fw_download(struct s3fwrn5_fw_info *fw_info);
void s3fwrn5_fw_cleanup(struct s3fwrn5_fw_info *fw_info); void s3fwrn5_fw_cleanup(struct s3fwrn5_fw_info *fw_info);
......
...@@ -164,7 +164,6 @@ static int s3fwrn5_i2c_read(struct s3fwrn5_i2c_phy *phy) ...@@ -164,7 +164,6 @@ static int s3fwrn5_i2c_read(struct s3fwrn5_i2c_phy *phy)
static irqreturn_t s3fwrn5_i2c_irq_thread_fn(int irq, void *phy_id) static irqreturn_t s3fwrn5_i2c_irq_thread_fn(int irq, void *phy_id)
{ {
struct s3fwrn5_i2c_phy *phy = phy_id; struct s3fwrn5_i2c_phy *phy = phy_id;
int ret = 0;
if (!phy || !phy->ndev) { if (!phy || !phy->ndev) {
WARN_ON_ONCE(1); WARN_ON_ONCE(1);
...@@ -179,10 +178,9 @@ static irqreturn_t s3fwrn5_i2c_irq_thread_fn(int irq, void *phy_id) ...@@ -179,10 +178,9 @@ static irqreturn_t s3fwrn5_i2c_irq_thread_fn(int irq, void *phy_id)
switch (phy->mode) { switch (phy->mode) {
case S3FWRN5_MODE_NCI: case S3FWRN5_MODE_NCI:
case S3FWRN5_MODE_FW: case S3FWRN5_MODE_FW:
ret = s3fwrn5_i2c_read(phy); s3fwrn5_i2c_read(phy);
break; break;
case S3FWRN5_MODE_COLD: case S3FWRN5_MODE_COLD:
ret = -EREMOTEIO;
break; break;
} }
...@@ -200,13 +198,21 @@ static int s3fwrn5_i2c_parse_dt(struct i2c_client *client) ...@@ -200,13 +198,21 @@ static int s3fwrn5_i2c_parse_dt(struct i2c_client *client)
if (!np) if (!np)
return -ENODEV; return -ENODEV;
phy->gpio_en = of_get_named_gpio(np, "en-gpios", 0);
if (!gpio_is_valid(phy->gpio_en)) {
/* Support also deprecated property */
phy->gpio_en = of_get_named_gpio(np, "s3fwrn5,en-gpios", 0); phy->gpio_en = of_get_named_gpio(np, "s3fwrn5,en-gpios", 0);
if (!gpio_is_valid(phy->gpio_en)) if (!gpio_is_valid(phy->gpio_en))
return -ENODEV; return -ENODEV;
}
phy->gpio_fw_wake = of_get_named_gpio(np, "wake-gpios", 0);
if (!gpio_is_valid(phy->gpio_fw_wake)) {
/* Support also deprecated property */
phy->gpio_fw_wake = of_get_named_gpio(np, "s3fwrn5,fw-gpios", 0); phy->gpio_fw_wake = of_get_named_gpio(np, "s3fwrn5,fw-gpios", 0);
if (!gpio_is_valid(phy->gpio_fw_wake)) if (!gpio_is_valid(phy->gpio_fw_wake))
return -ENODEV; return -ENODEV;
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment