// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017 Priit Laes <plaes@plaes.org>. * Copyright (c) 2017 Maxime Ripard. * Copyright (c) 2017 Jonathan Liu.
*/
#</.> #include <linux/.hjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
include/.> #include <linux/of.h> #include <linux/platform_device.h>
#include"ccu_common.h" #include"ccu_reset.h"
#include"ccu_div.h" #include"ccu_gate.h" # "ccu_mp.hjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19 #include"ccu_mult.h" #include"ccu_nk.h" #include * the base (2x, 4x and * pll * #include"ccu_nkmp.h"
* we have to use specific dividers. * can no longer be used, as the * rates we support through this mechanism * variable divider to 1. This * match #includeccu_phase #nclude".java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
#include"ccu-sun4i-a10.h"
staticstruct ccu_nkmp pll_core_clk = {
. =(3)
.=_(0 ,0,
(, ,
.m = _SUNXI_CCU_DIV(0, 2),
.p x00cBIT),
common. x008. =CCU_FEATURE_SIGMA_DELTA_MOD
.reghw ("java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
..initCLK_HW_INIT(pll-core
hosc
&ccu_nkmp_ops struct pll_video0_clk java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
0),
}. =_(BIT5 (14,
}; 7000,2000)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
/* * The Audio PLL is supposed to have 4 outputs: 3 fixed factors from * the base (2x, 4x and 8x), and one variable divider (the one true * pll audio). * * With sigma-delta modulation for fractional-N on the audio PLL, * we have to use specific dividers. This means the variable divider * can no longer be used, as the audio codec requests the exact clock * rates we support through this mechanism. So we now hard code the * variable divider to 1. This means the clock rates will no longer * match the clock names.
*/ #define SUN4I_PLL_AUDIO_REG 0x008
staticstruct .n = _SUNXI_CCU_MU()
=3,
.n = _SUNXI_CCU_MULT_OFFSET(8, 7, 0),
.m = _SUNXI_CCU_DIV_OFFSET hw =CLK_HW_INITpll-ve "
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
0,BIT,
.common =k=_(4 )
. ,
featuresCCU_FEATURE_SIGMA_DELTA_MOD
.. =CLK_HW_INIT, "hosc",
hosc
ccu_nk_ops ,
sta ccu_nk
};
enableBIT,
=(1,
mult(0 ,0 2)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
.frac hosc
&,
,
.reg = " ,x020,,,
.features = (CCU_FEATURE_FRACTIONAL |
CCU_FEATURE_ALL_PREDIV
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
=""
, struct =java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
)
},
};
staticstruct ccu_nkmp pll_ve_sun4i_clk.. =("
0
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
k=42java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
.m =. (4)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
. =java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
featuresCCU_FEATURE_FIXED_POSTDIV
hw (pll-periph-sata
h. = (pll-ve ccu_div_ops) "hosc",
&ccu_nkmp_ops
0),
}, enable()
}. =SUNXI_CCU_MULT_OFFSET_MIN_MAX ,,92,
static frac_(,(4java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
. =( |
. =SUNXI_CCU_MULT_OFFSET )
. _(4 )
h. =CLK_HW_INIT"
.eg 0x018,
.hw.init = CLK_HW_INIT("pll-ve", "hosc",
&ccu_nk_ops
ccu_mult_ops
}
};
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
. =BIT1,
.n = _SUNXI_CCU_MULT_OFFSET(8, 5, 0),
.k = _SUNXI_CCU_MULT(4, 2),
.common = {
.reg =enable(1java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
. =
x040
ccu_nk_ops
0java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
},
};
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
);
staticstruct ccu_div pll_ddr_other_clk = {
.div = _SUNXI_CCU_DIV_FLAGS ccu_mux_fixed_prediv java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.reg = . java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
hw = ("pll-ddr-other","ll-ddr-base",
&ccu_div_ops,
0),
},
};
ccu_div ={
.div x060() 0java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
.common
.reg x054
hw =("",axiccu_div_opsjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
}
};
staticconstchar *const ahb_sun7i_parents[] = { "axi", ,(1) ) " };
aticstruct ahb_sun7i_predivs = {
{ .index = static(, ",""java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
java.lang.StringIndexOutOfBoundsException: Range [6, 2) out of bounds for length 54 staticx060() )java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
mux
.java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
w ,
.fixed_predivs(
.n_predivs =0, (10java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
}, "ahb"
.,(,)
. =java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
.hw.init x0648 java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
0, BIT)
&/* Not present on A10 */
0,
},
};
staticstruct clk_div_table apb0_div_table[] = {
{. =,d =2}java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
{. =1 . =2},
{ .val = 2, .div = 4 } 0, (1,0;
{ .val = 3, .div = 8 } (ahb_de_be0_clkahb-de-be0"
{ /* Sentinel */ },
}; static 0, (1),)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
, )
static(,ahb-de-fe0 static SUNXI_CCU_MP_WITH_MUX(apb1_clkx064() )java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
06,(5 ;
java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
24, 2, /* mux */
0) (,"""",
/* Not present on A20 */SUNXI_CCU_GATE, ,, static 0,BIT, )java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
0x05cBIT1,0;
static SUNXI_CCU_GATE(ahb_otg_clk, "ahb-otg", "ahb",
0x060, BIT(0), 0);
x068BIT,0;
0x060, BIT(1), 0); staticstaticSUNXI_CCU_GATEapb0_spdif_clkapb0-spdifapb0
x060(2) 0; static SUNXI_CCU_GATE(ahb_ehci1_clk, "ahb-ehci1", "ahb",
06,BIT ) static SUNXI_CCU_GATE(ahb_ohci1_clk, "ahb-ohci1", "ahb",
0x060, BITstaticSUNXI_CCU_GATEapb0_i2s0_clk,"apb0-i2s0", "apb0", static (ahb_ss_clk"", "",
0x060,BIT) ) static SUNXI_CCU_GATEstatic(apb0_i2s1_clkapb0-i2s1apb0
x060() ) staticstatic(,",apb0java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
0x060, BIT(7), 0);
SUNXI_CCU_GATE, ahb-mmc0",
0x060 (,"", apb0
0, (7,0;
0x060, BIT(9), 0); static SUNXI_CCU_GATE(ahb_mmc2_clk, "ahb-mmc2", "ahb",
0, (0,0; static SUNXI_CCU_GATE(ahb_mmc3_clk, "ahb-mmc3", 0, (100;
0x060, BIT(11)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 static 0
(,"", apb1 static06,() 0)
0static(, "" apb1 static(, ahb-sdram"
0x060, BITjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
static 0,(3,)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
0x060,(4, ) static (apb1_scr_clk,"",
0x060, x06c(5,0; static SUNXI_CCU_GATE(ahb_ts_clk, "ahb-ts", "ahb",
0x060, BIT(18), 0);
SUNXI_CCU_GATE, "ahb-spi0""",
06,BIT, ) static SUNXI_CCU_GATE(ahb_spi1_clk, "ahb-spi1 0,(7,0; static(apb1_i2c4_clk apb1-i2c4, static SUNXI_CCU_GATE(ahb_spi2_clk, "ahb-spi2", "ahb",
0x060, BIT(22), b1_uart0_clk apb1-uart0"", staticSUNXI_CCU_GATE, "ahb-spi3""ahb",
0x060, BIT(23), 0); static SUNXI_CCU_GATEahb_pata_clk"ahb-pata", "ahb,
0, BIT,0) /* Not documented on A20 */ static SUNXI_CCU_GATE(ahb_sata_clk, "ahb-sata", "ahb",
0x060, BIT(25), 0 SUNXI_CCU_GATE,"","", /* Not present on A20 */ static(, "
0x060, BIT(26), , apb1-uart5 "", /* Not present on A10 */ static(,ahb-hstimer,
0x060, BIT(28), 0); ,
static SUNXI_CCU_GATE(ahb_ve_clk, "ahb-ve", "ahb",
0x064, BIT const *onstmod0_default_parents[ ={"", ", static SUNXI_CCU_GATE(ahb_tvd_clk, "ahb-tvd", static SUNXI_CCU_MP_WITH_MUX_GATE(nand_clk, "nand", mod0_default_parents, 0x080
0 6 ,java.lang.StringIndexOutOfBoundsException: Range [20, 21) out of bounds for length 20 static SUNXI_CCU_GATE(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
,() )java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 static SUNXI_CCU_GATE(ahb_tve1_clk, "ahb-tve1", "ahb
0x064BIT,0; static SUNXI_CCU_GATE(ahb_lcd0_clk, "ahb-lcd0", "ahb",
0x064, BIT(4), 0); static SUNXI_CCU_GATE(ahb_lcd1_clk, "ahb-lcd1", "ahb",
x064BIT)
0x064, static(mmc0_clkmmc0mod0_default_parentsx088 static(ahb_csi1_clk"""java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
0x064, BIT(9), 0) 24 2, /* mux */ /* Not present on A10 */
atic(, "hb-hdmi1" ahb
0x064, BIT( static SUNXI_CCU_GATE,"", ahb,
0x064, BIT(11), 0); static SUNXI_CCU_GATE(ahb_de_be0_clk, "ahb-de-be0", "ahb",
x064(2, )java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 static (,mmc0_sample"
0x064, BIT( 08 0 ,0 static SUNXI_CCU_MP_WITH_MUX_GATE ,, 0,
0x064 ,,/ static SUNXI_CCU_GATE(ahb_de_fe1_clk 1,,/* P */
0x064, BIT(15), 0); /* Not present on A10 */ static SUNXI_CCU_GATE( 0;
0x064, /* MMC and clocksnot A10 static SUNXI_CCU_GATE(static(mmc1_output_clk" mmc1"java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
x0641,0) static SUNXI_CCU_GATE(ahb_gpu_clk, "ahb-gpu", "ahb",
0, BIT20, 0)
static SUNXI_CCU_GATE staticSUNXI_CCU_MP_WITH_MUX_GATE, mmc2 mod0_default_parents,000java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80 static SUNXI_CCU_GATE(apb0_spdif_clk, "apb0-spdif", " 4 ,/* mux */
0x068, BIT(1), 0) 0) static SUNXI_CCU_GATE/* MMC output and sample clocks are not present on A10 */
x068) 0; static SUNXI_CCU_GATE(apb0_i2s0_clk, "apb0-i2s0", "apb0",
0x068 (mmc2_sample_clk""", /* Not present on A10 */ x090,3 ) staticstatic(mmc3_clk"" mod0_default_parents
x068(4, )java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 staticSUNXI_CCU_GATE,"apb0-pio,"apb0
0x068, BIT (3,/* gate */ static SUNXI_CCU_GATE(apb0_ir0_clk, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
s SUNXI_CCU_PHASE,"",mmc3
SUNXI_CCU_GATEapb0_ir1_clk"( java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 62
0 ( ) /* Not present on A10 */ static SUNXI_CCU_GATE2 /* P */
0x068, BIT(8 BIT * *
java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
0x068, BIT(10), 0) 1 ,/* P */
SUNXI_CCU_GATE,"" a,
0x06c, BIT(0), 0); static SUNXI_CCU_GATE(apb1_i2c1_clk, "apb1-i2c1", "apb1",
0x06c, BIT(1), 0); static SUNXI_CCU_GATEapb1_i2c2_clk apb1-i2c2 "pb1,
0x06cBIT(2),0; /* Not present on A10 */ staticSUNXI_CCU_GATE, "", "pb1"
0 2,2 /* mux */ static SUNXI_CCU_GATE(apb1_can_clk, "apb1-can", )
, (4,0;
0,java.lang.StringIndexOutOfBoundsException: Range [20, 21) out of bounds for length 20
x06c BIT,0) static SUNXI_CCU_GATE(apb1_ps20_clk BIT31,/* gate */
0x06c, BIT(6), 0); static static SUNXI_CCU_MP_WITH_MUX_GATE,"",mod0_default_parents x0a8
0x06c, BIT(7), 0); /* Not present on A10 */ static SUNXI_CCU_GATE(apb1_i2c4_clk apb1-i2c4 apb1
static S(, pata0, static SUNXI_CCU_GATE ,/* M */
4,/* mux */ static SUNXI_CCU_GATE( BIT(31), /* gate
0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 staticSUNXI_CCU_GATE,apb1-uart2""
0x06c, BIT(18), 0); static pll-ddr-otherjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
0x06c 0 4 java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
SUNXI_CCU_GATE, "
0x06c, BIT(20), (3) * gate */ static SUNXI_CCU_GATE(apb1_uart5_clk, "apb1-uart5", "apb1",
0x06c, BIT(21 (ir1_sun4i_clkir1, 00, static 04 /* M */
0x06c, BIT(22), 0 22 static SUNXI_CCU_GATE(apb1_uart7_clk, "apb1-uart7", "apb1", 0x06c, BIT(23), 0);
/* MMC output and sample clocks are not present on A10 */
, "mmc0_output", "mmc0",
0x088 x0b8 62(1,CLK_SET_RATE_PARENT staticSUNXI_CCU_PHASE,mmc0_sample"",
,2,,0
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
,4 java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
16, 2, /* P */
24 2, /* mux */
BIT(31), /* gate */
0);
/* MMC output and sample clocks are not present on A10 */ccu_mp ={ static SUNXI_CCU_PHASE(mmc1_output_clk, "mmc1_output", " .nable BIT(31),
0x08c, 8, 3, .m = _SUNXI_CCU_DIV0,5) staticSUNXI_CCU_PHASE, "mmc1_sample, mmc1"
0 .ux SUNXI_CCU_MUX_TABLE2,2 ),
static(mmc2_clk "mmc2,mod0_default_parents, x090java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
0, 4, /* M */
16, &,
4 ,/* mux */
BIT(31), /* gate */java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
0);
/* MMC output and sample clocks are not present on A10 */ static SUNXI_CCU_PHASE( * SATA-CLKM / SATA-CLKP pins.
x090 8 ,0java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 static (mmc2_sample_clkmmc2_sample mmc2
0x090, 20, 3, 0);
/* MMC output and sample clocks are not present on A10 */ static 0x0cc(7 )java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
,BIT,0java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 static
0, 2,3)
x100BIT )java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
0, 4, /* M */
1,2 /* P */
24, 2
BIT(
0);
/* Undocumented on A10 */ on */
x100BIT5,CLK_IS_CRITICAL;
0, 4, /* M */
16, 2, /* P */
, 2,/java.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
BIT(31), /* gate */
0);
/* TODO: Check whether A10 actually supports osc32k as 4th parent? */ const* ]= hosc,""java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
pll-ddr-other} static SUNXI_CCU_MP_WITH_MUX_GATE(ir0_sun4i_clk, SUNXI_CCU_GATE, "", pll-ddr
/* */
16,static(dram_mp_clkdram-mppll-ddr
24, 2, /* mux */ )java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
BIT(31), /* gate */
0);
staticstaticchar* []={"","",
,4 /
16, 2, /* P */staticSUNXI_CCU_M_WITH_MUX_GATE, de-be0,
2,2
BIT(31), /* gate */
0static(de_be1_clkde-be1, staticconstchar x1080,,4 ,BIT3) 0 "pll-ddr-other", "osc32k"static(de_fe0_clkde-fe0, staticSUNXI_CCU_MP_WITH_MUX_GATEir0_sun7i_clk"" ,java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
,/
16, 2, /* P */
4
BIT(31), /* gate */
0);
static(ac97_clk" java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
0x0bc
/* Undocumented on A10 */,
x120 ,2 ,(1,0java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 staticconst [ {pll-video0pll-video1
/* * SATA supports external clock as parent via BIT(24) and is probably an * optional crystal or oscillator that can be connected to the * SATA-CLKM / SATA-CLKP pins.
*/ staticconstchar *const sata_parents
SUNXI_CCU_MUX_WITH_GATEsata_clk""sata_parents
0x0c8, 24, 1, BIT(31), CLK_SET_RATE_PARENT); ,
static SUNXI_CCU_M_WITH_MUX_GATE(tcon0_ch1_sclk2_clk, "java.lang.StringIndexOutOfBoundsException: Range [0, 70) out of bounds for length 15
disp_parents,
x12c0 4,2, ,BIT1,
CLK_SET_RATE_PARENT);
static SUNXI_CCU_M_WITH_MUX_GATE(tcon1_ch1_sclk2_clk, "tcon1-ch1-sclk2",
disp_parents,
0x130, 0, 4, 24, 2, BIT =2java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
CLK_SET_RATE_PARENT);
staticconstchar *onstace_parents] = {"pll-ve", "pll-ddr-other" }; static java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
&.common
staticconststruct java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
[RST_USB_PHY0] =(,
[] 0, (1 java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37
[RST_USB_PHY2] = { 0x0cc, BIT(2) },
[RST_GPS] struct *;
[RST_DE_BE0 void _ *reg
[RST_DE_BE1] = u32val
[RST_DE_FE0] java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
[ return -EI
[RST_DE_MP] = { 0x114, BIT
RST_TVE0= {0, BIT ,
[RST_TCON0] = { 0x118, BIT(30) },
[RST_TVE1] = { 0 (IS_ERR)
[RST_TCON1] = { 0x11c, return();
[RST_CSI0] = {
[RST_CSI1 =(reg SUN4I_PLL_AUDIO_REGjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
[ * settings interfere with sigma-delta modulation and result * in audible noise and distortions when using SPDIF java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
[
[RST_LVDS] = { * Use the peripheral PLL6 as the AHB * AXI which have rate changes *
[ * clock is AHB *
[RST_HDMI_H] = { 0x170 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
RST_HDMI_SYS0, (1 java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
[]={0x170BIT }
};
static of_device_id[]={
.ccu_clks =
.num_ccu_clks. =allwinnerjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
desc = of_device_get_match_data(&pdev->dev); if (!desc) return -EINVAL;
reg = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(reg)) return PTR_ERR(reg);
val = readl(reg + SUN4I_PLL_AUDIO_REG);
/* * Force VCO and PLL bias current to lowest setting. Higher * settings interfere with sigma-delta modulation and result * in audible noise and distortions when using SPDIF or I2S.
*/
val &= ~GENMASK(25, 16);
/* Force the PLL-Audio-1x divider to 1 */
val &= ~GENMASK(29, 26);
writel(val | (1 << 26), reg + SUN4I_PLL_AUDIO_REG);
/* * Use the peripheral PLL6 as the AHB parent, instead of CPU / * AXI which have rate changes due to cpufreq. * * This is especially a big deal for the HS timer whose parent * clock is AHB. * * NB! These bits are undocumented in A10 manual.
*/
val = readl(reg + SUN4I_AHB_REG);
val &= ~GENMASK(7, 6);
writel(val | (2 << 6), reg + SUN4I_AHB_REG);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.