- Add AXG support for SARADC, including minimal ao-clk driver
- Update Amlogic documentation for Matrix & Jethub D1 -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPVPGJshWBf4d9CyLd9zb2sjISdEFAmJo84YACgkQd9zb2sjI SdGgew//SPy7itxbFghfDXsRCA21W9potZQiL+Mpu3KmkYsGJ9l3axj8EAj/5VE6 /We80jschGMDn8fEwTZn+V0wlnyIohdO/D89pjjOSWGlALtRjF8pTUem/rALm6Ay 0jKbpiHej8vvFOEA6oWYXpN/cGYs/62A2J8e6+rCrpgnPJpdoHtnuCj6LmioMAhM tdVXmwbAZB4VVee17WVRbmuZXapYpgcZ/GF73vgPwvz7lvGANBdLqCJT8r+j57eU jwAKpRTSMRBlYflQqodV/C9uBl/OaNI5tQ5L06kDtlR5SQti3CjqCI2paujCl+Op e/1HYAeooOQ+CmOjL3cRhiFiINJ/jKnXh+LmdvDUMGZX9WuWKD369YKFyKeB3Quy pKqdTX3vdjQmn7+JUWqAZhFQqmiDC1RJ4ZtJEN8oY+gjDriyBbm1PmvGJOL/S4Rt 5hKFrgGMZCGChmyBNsoke2z2fMDNwCKZil2HIA8zZjAgGvVshf0jeo0VldMI29a+ FocOJxy8wo2cZRG8vPILq4gVyOQtV4xgRoJloj3DTb+9Drz/1+lPLfRJd9h8+apS rcyk3cjJ9RNDWT7K0WLN50eQa/Jpc0o5rvVlVzExCX32D/KMLkwYCYh4LKiEOFlb nmcm80Q4JiGQbx7wfxT6bD0X1uXvSjCSuFCn9UDTK7/Arj+i94Q= =At4/ -----END PGP SIGNATURE----- Merge tag 'u-boot-amlogic-20220427' of https://source.denx.de/u-boot/custodians/u-boot-amlogic - Add AXG support for SARADC, including minimal ao-clk driver - Update Amlogic documentation for Matrix & Jethub D1
This commit is contained in:
		
						commit
						24df831cd4
					
				| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022 Vyacheslav Bocharov <adeep@lexina.in>
 | 
				
			||||||
 | 
					 * Author: Vyacheslav Bocharov <adeep@lexina.in>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					&saradc {
 | 
				
			||||||
 | 
						status = "okay";
 | 
				
			||||||
 | 
						vref-supply = <&vddio_ao18>;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@ CONFIG_REMAKE_ELF=y
 | 
				
			||||||
CONFIG_OF_BOARD_SETUP=y
 | 
					CONFIG_OF_BOARD_SETUP=y
 | 
				
			||||||
# CONFIG_DISPLAY_CPUINFO is not set
 | 
					# CONFIG_DISPLAY_CPUINFO is not set
 | 
				
			||||||
CONFIG_MISC_INIT_R=y
 | 
					CONFIG_MISC_INIT_R=y
 | 
				
			||||||
 | 
					CONFIG_CMD_ADC=y
 | 
				
			||||||
# CONFIG_CMD_BDI is not set
 | 
					# CONFIG_CMD_BDI is not set
 | 
				
			||||||
# CONFIG_CMD_IMI is not set
 | 
					# CONFIG_CMD_IMI is not set
 | 
				
			||||||
CONFIG_CMD_EEPROM=y
 | 
					CONFIG_CMD_EEPROM=y
 | 
				
			||||||
| 
						 | 
					@ -34,6 +35,10 @@ CONFIG_OF_CONTROL=y
 | 
				
			||||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 | 
					CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 | 
				
			||||||
CONFIG_DM_I2C=y
 | 
					CONFIG_DM_I2C=y
 | 
				
			||||||
CONFIG_SYS_I2C_MESON=y
 | 
					CONFIG_SYS_I2C_MESON=y
 | 
				
			||||||
 | 
					CONFIG_ADC=y
 | 
				
			||||||
 | 
					CONFIG_SARADC_MESON=y
 | 
				
			||||||
 | 
					CONFIG_CLK=y
 | 
				
			||||||
 | 
					CONFIG_CLK_MESON_AXG=y
 | 
				
			||||||
CONFIG_MMC_MESON_GX=y
 | 
					CONFIG_MMC_MESON_GX=y
 | 
				
			||||||
CONFIG_MTD_UBI=y
 | 
					CONFIG_MTD_UBI=y
 | 
				
			||||||
CONFIG_PHY_REALTEK=y
 | 
					CONFIG_PHY_REALTEK=y
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +55,7 @@ This matrix concerns the actual source code version.
 | 
				
			||||||
+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
					+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
				
			||||||
| NAND                          | No        | No              | No           | No          | No         | No          | No           |
 | 
					| NAND                          | No        | No              | No           | No          | No         | No          | No           |
 | 
				
			||||||
+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
					+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
				
			||||||
| ADC                           | **Yes**   | **Yes**         | **Yes**      | No          | No         | No          | No           |
 | 
					| ADC                           | **Yes**   | **Yes**         | **Yes**      | **Yes**     | No         | No          | No           |
 | 
				
			||||||
+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
					+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
				
			||||||
| CVBS Output                   | **Yes**   | **Yes**         | **Yes**      | *N/A*       | **Yes**    | **Yes**     | **Yes**      |
 | 
					| CVBS Output                   | **Yes**   | **Yes**         | **Yes**      | *N/A*       | **Yes**    | **Yes**     | **Yes**      |
 | 
				
			||||||
+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
					+-------------------------------+-----------+-----------------+--------------+-------------+------------+-------------+--------------+
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,27 +3,33 @@
 | 
				
			||||||
U-Boot for JetHub J100
 | 
					U-Boot for JetHub J100
 | 
				
			||||||
=======================
 | 
					=======================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JetHome Jethub D1 (http://jethome.ru/jethub-d1) is a home automation
 | 
					JetHome Jethub D1 (http://jethome.ru/jethub-d1) is a series of home
 | 
				
			||||||
controller manufactured by JetHome with the following specifications:
 | 
					automation controller manufactured by JetHome with the following
 | 
				
			||||||
 | 
					specifications:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - Amlogic A113X (ARM Cortex-A53) quad-core up to 1.5GHz
 | 
					 - Amlogic A113X (ARM Cortex-A53) quad-core up to 1.5GHz
 | 
				
			||||||
 - no video out
 | 
					 - no video out
 | 
				
			||||||
 - 512Mb/1GB DDR3
 | 
					 - 512MB/1GB DDR3 or 2GB DDR4 SDRAM
 | 
				
			||||||
 - 8/16GB eMMC flash
 | 
					 - 8/16/32GB eMMC flash
 | 
				
			||||||
 - 1 x USB 2.0
 | 
					 - 1 x USB 2.0
 | 
				
			||||||
 - 1 x 10/100Mbps ethernet
 | 
					 - 1 x 10/100Mbps ethernet
 | 
				
			||||||
 - WiFi / Bluetooth AMPAK AP6255 (Broadcom BCM43455) IEEE
 | 
					 - WiFi / Bluetooth one from:
 | 
				
			||||||
   802.11a/b/g/n/ac, Bluetooth 4.2.
 | 
					   - AMPAK AP6255 (Broadcom BCM43455) IEEE 802.11a/b/g/n/ac, Bluetooth 4.2
 | 
				
			||||||
 - TI CC2538 + CC2592 Zigbee Wireless Module with up to 20dBm output
 | 
					   - RTL8822CS IEEE 802.11a/b/g/n/ac, Bluetooth 5.0
 | 
				
			||||||
   power and Zigbee 3.0 support.
 | 
					   - Amlogic W155S1 WiFi5 IEEE 802.11a/b/g/n/ac, Bluetooth 5.2
 | 
				
			||||||
 - 2 x gpio LEDS
 | 
					 - 2 x gpio LEDS
 | 
				
			||||||
 - GPIO user Button
 | 
					 - GPIO user Button
 | 
				
			||||||
 | 
					 - DC source with a voltage of 9 to 56 V / Passive POE
 | 
				
			||||||
 | 
					 - DIN Rail Mounting case
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Basic version also has:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - TI CC2538 + CC2592 Zigbee Wireless Module with up to 20dBm output
 | 
				
			||||||
 | 
					   power and Zigbee 3.0 support.
 | 
				
			||||||
 - 1 x 1-Wire
 | 
					 - 1 x 1-Wire
 | 
				
			||||||
 - 2 x RS-485
 | 
					 - 2 x RS-485
 | 
				
			||||||
 - 4 x dry contact digital GPIO inputs
 | 
					 - 4 x dry contact digital GPIO inputs
 | 
				
			||||||
 - 3 x relay GPIO outputs
 | 
					 - 3 x relay GPIO outputs
 | 
				
			||||||
 - DC source with a voltage of 9 to 56 V / Passive POE
 | 
					 | 
				
			||||||
 - DIN Rail Mounting case
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
U-Boot compilation
 | 
					U-Boot compilation
 | 
				
			||||||
------------------
 | 
					------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -737,6 +737,8 @@ static const struct udevice_id meson_saradc_ids[] = {
 | 
				
			||||||
	  .data = (ulong)&gxl_saradc_data },
 | 
						  .data = (ulong)&gxl_saradc_data },
 | 
				
			||||||
	{ .compatible = "amlogic,meson-g12a-saradc",
 | 
						{ .compatible = "amlogic,meson-g12a-saradc",
 | 
				
			||||||
	  .data = (ulong)&gxl_saradc_data },
 | 
						  .data = (ulong)&gxl_saradc_data },
 | 
				
			||||||
 | 
						{ .compatible = "amlogic,meson-axg-saradc",
 | 
				
			||||||
 | 
						  .data = (ulong)&gxl_saradc_data },
 | 
				
			||||||
	{ }
 | 
						{ }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,5 +5,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
obj-$(CONFIG_CLK_MESON_GX) += gxbb.o
 | 
					obj-$(CONFIG_CLK_MESON_GX) += gxbb.o
 | 
				
			||||||
obj-$(CONFIG_CLK_MESON_AXG) += axg.o
 | 
					obj-$(CONFIG_CLK_MESON_AXG) += axg.o
 | 
				
			||||||
 | 
					obj-$(CONFIG_CLK_MESON_AXG) += axg-ao.o
 | 
				
			||||||
obj-$(CONFIG_CLK_MESON_G12A) += g12a.o
 | 
					obj-$(CONFIG_CLK_MESON_G12A) += g12a.o
 | 
				
			||||||
obj-$(CONFIG_CLK_MESON_G12A) += g12a-ao.o
 | 
					obj-$(CONFIG_CLK_MESON_G12A) += g12a-ao.o
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,86 @@
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: GPL-2.0+
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <common.h>
 | 
				
			||||||
 | 
					#include <log.h>
 | 
				
			||||||
 | 
					#include <asm/io.h>
 | 
				
			||||||
 | 
					#include <clk-uclass.h>
 | 
				
			||||||
 | 
					#include <dm.h>
 | 
				
			||||||
 | 
					#include <regmap.h>
 | 
				
			||||||
 | 
					#include <syscon.h>
 | 
				
			||||||
 | 
					#include <dt-bindings/clock/axg-aoclkc.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "clk_meson.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct meson_clk {
 | 
				
			||||||
 | 
						struct regmap *map;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define AO_CLK_GATE0		0x40
 | 
				
			||||||
 | 
					#define AO_SAR_CLK		0x90
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static struct meson_gate gates[] = {
 | 
				
			||||||
 | 
						MESON_GATE(CLKID_AO_SAR_ADC, AO_CLK_GATE0, 7),
 | 
				
			||||||
 | 
						MESON_GATE(CLKID_AO_SAR_ADC_CLK, AO_SAR_CLK, 7),
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int meson_set_gate(struct clk *clk, bool on)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct meson_clk *priv = dev_get_priv(clk->dev);
 | 
				
			||||||
 | 
						struct meson_gate *gate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						gate = &gates[clk->id];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						regmap_update_bits(priv->map, gate->reg,
 | 
				
			||||||
 | 
								   BIT(gate->bit), on ? BIT(gate->bit) : 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int meson_clk_enable(struct clk *clk)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return meson_set_gate(clk, true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int meson_clk_disable(struct clk *clk)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return meson_set_gate(clk, false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int meson_clk_probe(struct udevice *dev)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct meson_clk *priv = dev_get_priv(dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						priv->map = syscon_node_to_regmap(dev_ofnode(dev_get_parent(dev)));
 | 
				
			||||||
 | 
						if (IS_ERR(priv->map))
 | 
				
			||||||
 | 
							return PTR_ERR(priv->map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int meson_clk_request(struct clk *clk)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (clk->id >= ARRAY_SIZE(gates))
 | 
				
			||||||
 | 
							return -ENOENT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static struct clk_ops meson_clk_ops = {
 | 
				
			||||||
 | 
						.disable	= meson_clk_disable,
 | 
				
			||||||
 | 
						.enable		= meson_clk_enable,
 | 
				
			||||||
 | 
						.request	= meson_clk_request,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct udevice_id meson_clk_ids[] = {
 | 
				
			||||||
 | 
						{ .compatible = "amlogic,meson-axg-aoclkc" },
 | 
				
			||||||
 | 
						{ }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					U_BOOT_DRIVER(meson_clk_axg_ao) = {
 | 
				
			||||||
 | 
						.name		= "meson_clk_axg_ao",
 | 
				
			||||||
 | 
						.id		= UCLASS_CLK,
 | 
				
			||||||
 | 
						.of_match	= meson_clk_ids,
 | 
				
			||||||
 | 
						.priv_auto	= sizeof(struct meson_clk),
 | 
				
			||||||
 | 
						.ops		= &meson_clk_ops,
 | 
				
			||||||
 | 
						.probe		= meson_clk_probe,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -28,14 +28,8 @@ static int meson_set_gate(struct clk *clk, bool on)
 | 
				
			||||||
	struct meson_clk *priv = dev_get_priv(clk->dev);
 | 
						struct meson_clk *priv = dev_get_priv(clk->dev);
 | 
				
			||||||
	struct meson_gate *gate;
 | 
						struct meson_gate *gate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (clk->id >= ARRAY_SIZE(gates))
 | 
					 | 
				
			||||||
		return -ENOENT;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	gate = &gates[clk->id];
 | 
						gate = &gates[clk->id];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (gate->reg == 0)
 | 
					 | 
				
			||||||
		return 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	regmap_update_bits(priv->map, gate->reg,
 | 
						regmap_update_bits(priv->map, gate->reg,
 | 
				
			||||||
			   BIT(gate->bit), on ? BIT(gate->bit) : 0);
 | 
								   BIT(gate->bit), on ? BIT(gate->bit) : 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,9 +57,18 @@ static int meson_clk_probe(struct udevice *dev)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int meson_clk_request(struct clk *clk)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (clk->id >= ARRAY_SIZE(gates))
 | 
				
			||||||
 | 
							return -ENOENT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct clk_ops meson_clk_ops = {
 | 
					static struct clk_ops meson_clk_ops = {
 | 
				
			||||||
	.disable	= meson_clk_disable,
 | 
						.disable	= meson_clk_disable,
 | 
				
			||||||
	.enable		= meson_clk_enable,
 | 
						.enable		= meson_clk_enable,
 | 
				
			||||||
 | 
						.request	= meson_clk_request,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct udevice_id meson_clk_ids[] = {
 | 
					static const struct udevice_id meson_clk_ids[] = {
 | 
				
			||||||
| 
						 | 
					@ -73,7 +76,7 @@ static const struct udevice_id meson_clk_ids[] = {
 | 
				
			||||||
	{ }
 | 
						{ }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
U_BOOT_DRIVER(meson_clk_axg) = {
 | 
					U_BOOT_DRIVER(meson_clk_g12a_ao) = {
 | 
				
			||||||
	.name		= "meson_clk_g12a_ao",
 | 
						.name		= "meson_clk_g12a_ao",
 | 
				
			||||||
	.id		= UCLASS_CLK,
 | 
						.id		= UCLASS_CLK,
 | 
				
			||||||
	.of_match	= meson_clk_ids,
 | 
						.of_match	= meson_clk_ids,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue