forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'arm-late-6.0' of git://git.kernel.org/pub/scm/linux/kernel…
…/git/soc/soc Pull more ARM SoC updates from Arnd Bergmann: "These updates came in after I had already tagged the branches, but they still seem appropriate for 6.0 and most of them were part of linux-next through other trees. - The reset controller tree adds one new driver for the TI TPS380x power management chip and a few minor changes in other drivers - Apple M1 now has a DT entry for the NVMe controller after the driver was merged, and has a new mailing list in the MAINTAINERS file. - Fixes for USB on the Socionext Uniphier platforms and the network controller on Intel Cyclone5" * tag 'arm-late-6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: arm64: dts: uniphier: Fix USB interrupts for PXs3 SoC ARM: dts: uniphier: Fix USB interrupts for PXs2 SoC arm64: dts: apple: t8103: Add ANS2 NVMe nodes reset: tps380x: Fix spelling mistake "Voltags" -> "Voltage" reset: tps380x: Add TPS380x device driver supprt dt-bindings: reset: Add TPS380x documentation dt-bindings: reset: renesas,rzg2l-usbphy-ctrl: Document RZ/G2UL USBPHY Control bindings ARM: dts: add EMAC AXI settings for Cyclone5 reset: reset-simple should depends on HAS_IOMEM Revert "reset: microchip-sparx5: allow building as a module" reset: a10sr: allow building under COMPILE_TEST reset: allow building of reset simple driver if expert config selected reset: microchip-sparx5: allow building as a module arm64: dts: apple: Re-parent ANS2 power domains MAINTAINERS: add ARM/APPLE MACHINE mailing list
- Loading branch information
Showing
11 changed files
with
240 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
Documentation/devicetree/bindings/reset/ti,tps380x-reset.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/reset/ti,tps380x-reset.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: TI TPS380x reset controller node bindings | ||
|
||
maintainers: | ||
- Marco Felsch <[email protected]> | ||
|
||
description: | | ||
The TPS380x family [1] of supervisory circuits monitor supply voltages to | ||
provide circuit initialization and timing supervision. The devices assert a | ||
RESET signal if the voltage drops below a preset threshold or upon a manual | ||
reset input (MR). The RESET output remains asserted for the factory | ||
programmed delay after the voltage return above its threshold or after the | ||
manual reset input is released. | ||
[1] https://www.ti.com/product/TPS3801 | ||
properties: | ||
compatible: | ||
enum: | ||
- ti,tps3801 | ||
|
||
reset-gpios: | ||
maxItems: 1 | ||
description: Reference to the GPIO connected to the MR pin. | ||
|
||
"#reset-cells": | ||
const: 0 | ||
|
||
required: | ||
- compatible | ||
- reset-gpios | ||
- "#reset-cells" | ||
|
||
additionalProperties: false | ||
|
||
examples: | ||
- | | ||
#include <dt-bindings/gpio/gpio.h> | ||
reset: reset-controller { | ||
compatible = "ti,tps3801"; | ||
#reset-cells = <0>; | ||
reset-gpios = <&gpio3 2 GPIO_ACTIVE_LOW>; | ||
}; | ||
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1850,6 +1850,7 @@ ARM/APPLE MACHINE SUPPORT | |
M: Hector Martin <[email protected]> | ||
M: Sven Peter <[email protected]> | ||
R: Alyssa Rosenzweig <[email protected]> | ||
L: [email protected] | ||
L: [email protected] (moderated for non-subscribers) | ||
S: Maintained | ||
W: https://asahilinux.org | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
// SPDX-License-Identifier: GPL-2.0-or-later | ||
/* | ||
* TI TPS380x Supply Voltage Supervisor and Reset Controller Driver | ||
* | ||
* Copyright (C) 2022 Pengutronix, Marco Felsch <[email protected]> | ||
* | ||
* Based on Simple Reset Controller Driver | ||
* | ||
* Copyright (C) 2017 Pengutronix, Philipp Zabel <[email protected]> | ||
*/ | ||
|
||
#include <linux/delay.h> | ||
#include <linux/gpio/consumer.h> | ||
#include <linux/module.h> | ||
#include <linux/of.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/property.h> | ||
#include <linux/reset-controller.h> | ||
|
||
struct tps380x_reset { | ||
struct reset_controller_dev rcdev; | ||
struct gpio_desc *reset_gpio; | ||
unsigned int reset_ms; | ||
}; | ||
|
||
struct tps380x_reset_devdata { | ||
unsigned int min_reset_ms; | ||
unsigned int typ_reset_ms; | ||
unsigned int max_reset_ms; | ||
}; | ||
|
||
static inline | ||
struct tps380x_reset *to_tps380x_reset(struct reset_controller_dev *rcdev) | ||
{ | ||
return container_of(rcdev, struct tps380x_reset, rcdev); | ||
} | ||
|
||
static int | ||
tps380x_reset_assert(struct reset_controller_dev *rcdev, unsigned long id) | ||
{ | ||
struct tps380x_reset *tps380x = to_tps380x_reset(rcdev); | ||
|
||
gpiod_set_value_cansleep(tps380x->reset_gpio, 1); | ||
|
||
return 0; | ||
} | ||
|
||
static int | ||
tps380x_reset_deassert(struct reset_controller_dev *rcdev, unsigned long id) | ||
{ | ||
struct tps380x_reset *tps380x = to_tps380x_reset(rcdev); | ||
|
||
gpiod_set_value_cansleep(tps380x->reset_gpio, 0); | ||
msleep(tps380x->reset_ms); | ||
|
||
return 0; | ||
} | ||
|
||
static const struct reset_control_ops reset_tps380x_ops = { | ||
.assert = tps380x_reset_assert, | ||
.deassert = tps380x_reset_deassert, | ||
}; | ||
|
||
static int tps380x_reset_of_xlate(struct reset_controller_dev *rcdev, | ||
const struct of_phandle_args *reset_spec) | ||
{ | ||
/* No special handling needed, we have only one reset line per device */ | ||
return 0; | ||
} | ||
|
||
static int tps380x_reset_probe(struct platform_device *pdev) | ||
{ | ||
struct device *dev = &pdev->dev; | ||
const struct tps380x_reset_devdata *devdata; | ||
struct tps380x_reset *tps380x; | ||
|
||
devdata = device_get_match_data(dev); | ||
if (!devdata) | ||
return -EINVAL; | ||
|
||
tps380x = devm_kzalloc(dev, sizeof(*tps380x), GFP_KERNEL); | ||
if (!tps380x) | ||
return -ENOMEM; | ||
|
||
tps380x->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); | ||
if (IS_ERR(tps380x->reset_gpio)) | ||
return dev_err_probe(dev, PTR_ERR(tps380x->reset_gpio), | ||
"Failed to get GPIO\n"); | ||
|
||
tps380x->reset_ms = devdata->max_reset_ms; | ||
|
||
tps380x->rcdev.ops = &reset_tps380x_ops; | ||
tps380x->rcdev.owner = THIS_MODULE; | ||
tps380x->rcdev.dev = dev; | ||
tps380x->rcdev.of_node = dev->of_node; | ||
tps380x->rcdev.of_reset_n_cells = 0; | ||
tps380x->rcdev.of_xlate = tps380x_reset_of_xlate; | ||
tps380x->rcdev.nr_resets = 1; | ||
|
||
return devm_reset_controller_register(dev, &tps380x->rcdev); | ||
} | ||
|
||
static const struct tps380x_reset_devdata tps3801_reset_data = { | ||
.min_reset_ms = 120, | ||
.typ_reset_ms = 200, | ||
.max_reset_ms = 280, | ||
}; | ||
|
||
static const struct of_device_id tps380x_reset_dt_ids[] = { | ||
{ .compatible = "ti,tps3801", .data = &tps3801_reset_data }, | ||
{ /* sentinel */ }, | ||
}; | ||
MODULE_DEVICE_TABLE(of, tps380x_reset_dt_ids); | ||
|
||
static struct platform_driver tps380x_reset_driver = { | ||
.probe = tps380x_reset_probe, | ||
.driver = { | ||
.name = "tps380x-reset", | ||
.of_match_table = tps380x_reset_dt_ids, | ||
}, | ||
}; | ||
module_platform_driver(tps380x_reset_driver); | ||
|
||
MODULE_AUTHOR("Marco Felsch <[email protected]>"); | ||
MODULE_DESCRIPTION("TI TPS380x Supply Voltage Supervisor and Reset Driver"); | ||
MODULE_LICENSE("GPL v2"); |