mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 17:23:55 +08:00
pwm: tegra: Add device tree support
Add auxdata to instantiate the PWFM controller from a device tree, include the corresponding nodes in the dtsi files for Tegra 20 and Tegra 30 and add binding documentation. Acked-by: Stephen Warren <swarren@wwwdotorg.org> Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
This commit is contained in:
parent
0134b932a0
commit
140fd977dc
18
Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
Normal file
18
Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
Normal file
@ -0,0 +1,18 @@
|
||||
Tegra SoC PWFM controller
|
||||
|
||||
Required properties:
|
||||
- compatible: should be one of:
|
||||
- "nvidia,tegra20-pwm"
|
||||
- "nvidia,tegra30-pwm"
|
||||
- reg: physical base address and length of the controller's registers
|
||||
- #pwm-cells: On Tegra the number of cells used to specify a PWM is 2. The
|
||||
first cell specifies the per-chip index of the PWM to use and the second
|
||||
cell is the duty cycle in nanoseconds.
|
||||
|
||||
Example:
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
compatible = "nvidia,tegra20-pwm";
|
||||
reg = <0x7000a000 0x100>;
|
||||
#pwm-cells = <2>;
|
||||
};
|
@ -123,6 +123,12 @@
|
||||
status = "disable";
|
||||
};
|
||||
|
||||
pwm {
|
||||
compatible = "nvidia,tegra20-pwm";
|
||||
reg = <0x7000a000 0x100>;
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
compatible = "nvidia,tegra20-i2c";
|
||||
reg = <0x7000c000 0x100>;
|
||||
|
@ -117,6 +117,12 @@
|
||||
status = "disable";
|
||||
};
|
||||
|
||||
pwm {
|
||||
compatible = "nvidia,tegra30-pwm", "nvidia,tegra20-pwm";
|
||||
reg = <0x7000a000 0x100>;
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
|
||||
i2c@7000c000 {
|
||||
compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
|
||||
reg = <0x7000c000 0x100>;
|
||||
|
@ -64,6 +64,7 @@ struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = {
|
||||
&tegra_ehci2_pdata),
|
||||
OF_DEV_AUXDATA("nvidia,tegra20-ehci", TEGRA_USB3_BASE, "tegra-ehci.2",
|
||||
&tegra_ehci3_pdata),
|
||||
OF_DEV_AUXDATA("nvidia,tegra20-pwm", TEGRA_PWFM_BASE, "tegra-pwm", NULL),
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -33,6 +33,8 @@
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/hardware/gic.h>
|
||||
|
||||
#include <mach/iomap.h>
|
||||
|
||||
#include "board.h"
|
||||
#include "clock.h"
|
||||
|
||||
@ -52,6 +54,7 @@ struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = {
|
||||
OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C700, "tegra-i2c.3", NULL),
|
||||
OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000D000, "tegra-i2c.4", NULL),
|
||||
OF_DEV_AUXDATA("nvidia,tegra30-ahub", 0x70080000, "tegra30-ahub", NULL),
|
||||
OF_DEV_AUXDATA("nvidia,tegra30-pwm", TEGRA_PWFM_BASE, "tegra-pwm", NULL),
|
||||
{}
|
||||
};
|
||||
|
||||
|
@ -239,9 +239,20 @@ static int __devexit tegra_pwm_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static struct of_device_id tegra_pwm_of_match[] = {
|
||||
{ .compatible = "nvidia,tegra20-pwm" },
|
||||
{ .compatible = "nvidia,tegra30-pwm" },
|
||||
{ }
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(of, tegra_pwm_of_match);
|
||||
#endif
|
||||
|
||||
static struct platform_driver tegra_pwm_driver = {
|
||||
.driver = {
|
||||
.name = "tegra-pwm",
|
||||
.of_match_table = of_match_ptr(tegra_pwm_of_match),
|
||||
},
|
||||
.probe = tegra_pwm_probe,
|
||||
.remove = __devexit_p(tegra_pwm_remove),
|
||||
|
Loading…
Reference in New Issue
Block a user