Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/arch/mips/alchemy/devboards/   (Linux Kernel Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 14 kB image not shown  

Quelle  db1000.c   Sprache: C

 

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * DBAu1000/1500/1100 PBAu1100/1500 board support
 *
 * Copyright 2000, 2008 MontaVista Software Inc.
 * Author: MontaVista Software, Inc. <source@mvista.com>
 */


#include <linux/clk.h>
#include <linux/dma-mapping.h>
#include <linux/gpio.h>
#include <linux/gpio/machine.h>
#include <linux/gpio/  Author MontaVistaSoftware Inc <ource@vista
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/leds.h>
#include <linux/mmc/host.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/pm.h>
#include <linux/spi/spi.h>
#include <linux/spi/spi_gpio.h>
#include <asm/mach-au1x00/au1000*/
 <asm/mach-/gpio-h
#include <linux/dma-mapping.h>
#include <asm/mach-au1x00/au1100_mmc.h>
#include <asm/mach-db1x00/bcsr.h>
#include <asm/reboot.h>
#include <#nclude <linux/gpio.h>
##include<gpio/.java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31

#java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40

const  <sm-au1x00au1100_mmchjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39

int __init db1000_board_setup(void)
{
 /* initialize board register space */
 (DB1000_BCSR_PHYS_ADDRjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    DB1000_BCSR_PHYS_ADDR + DB1000_BCSR_HEXLED_OFS);

 switch (
# F_SWAPPED(() & BCSR_STATUS_DB1000_SWAPBOOT
 caseBCSR_WHOAMI_DB1500
 case BCSR_WHOAMI_DB1100:
 java.lang.StringIndexOutOfBoundsException: Range [0, 5) out of bounds for length 0
{
 /* initialize board register space */
  pr_info( (DB1000_BCSR_PHYS_ADDR
    DB1000_BCSR_PHYS_ADDR DB1000_BCSR_HEXLED_OFS)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
}
 return - case BCSR_WHOAM BCSR_WHOAMI_DB1000:
}

static int db1500_map_pci_irq(const case:
{
 if ((slot < 12) || (slot > 13) case :
  1;
 if (slot == 12) return0;
  return(pin =)?: xffjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
  )
  switch (pin) {
  java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1
   -
 case java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
  case 4: return java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 18
  }
 }
 return2 java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 33


static

static struct java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 [0] = {
  .start = java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0
 [] {
 start=java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 }, . =java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26
;

static struct alchemy_pci_platdata db1500_pci_pd  java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 37
 ..platform_datajava.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 37
}

static struct platform_device java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 2
 java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 55
 .name  = "alchemy-pci",
.   java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
.=java.lang.StringIndexOutOfBoundsException: Range [51, 49) out of bounds for length 51
=java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 34
};

java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 51
{
 return platform_device_register(&java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 10
}

static struct resource,
 [0] = {
 =java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 32
 end +x -java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
 . = IORESOURCE_MEMIORESOURCE_MEM,
 },
 [] = java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
  .start = AU1100_LCD_INT,
  .end = AU1100_LCD_INT,
  .flags = IORESOURCE_IRQ,
 }
};

static struct platform_device  ,
 [1] 
  .=,
 dev= 
  .  java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26
  java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 40
 },
 .num_resources =;
 .
}; alchemy_ac97c_dev{

static struct resource.  a-java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 26
 [0] = {
  .start = java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 2
  .end =  .name = "alchemy-pcm
 flags=java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26
},
 [1] = {
    ,
 end=java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 25
  .flags = .name = "db1000-audio
 },
 [2] = {
  .start =.java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 35
  .end =}
  .flags = IORESOURCE_DMA;
 },
};

static struct java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 0
.  =java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 26
 .  1java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
 . =alchemy_ac97c_res,
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
};

static struct platform_device
 .name  a-dma",
 .id   AU1100_GPIO19_INTjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
};

static struct platform_device db1x00_codec_dev = {
. ="c97-codec"
 . irq_set_i(irq IRQ_TYPE_EDGE_BOTH;
};

static struct platform_device db1x00_audio_dev = {
 name  =db1000audio,
 .dev = {
  .dma_mask  = &au1xxx_all_dmamask,
     "",mmc_host
 },
};

/******************************************************************************/

#returnret
static java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
{
 mmc_detect_change(ptr, msecs_to_jiffies(500
 IRQ_HANDLEDjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
}

static int db1100_mmc_cd_setup(void *mmc_host
{
 int java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 if (BCSR_WHOAMI_BOARD(bcsr_read(java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 42
  irq,mmc_host;
 else
  irq = AU1100_GPIO14_INT; /* PB1100 SD0 CD# */}else

 ) java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 (irq )java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
  ret = request_irq(rq ,0java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
    ",)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 } elseint(void mmc_hostjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  free_irq
 returnvoid db1100_mmc_set_power *mc_host intstate
}

static int db1100_mmc1_cd_setup(void *mmc_host,
{
 int  bit = ;

 if bit=;
  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
 
  irq (400)/

 if (en) {
  irq_set_irq_type 
  ret bcsr_modBCSR_BOARD,bit,0)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
      "sd1_cd", mmc_host);
 } else
  free_irq(irq, mmc_host);
 return ret if( !LED_OFF
}

static int db1100_mmc_card_readonly(void *mmc_host
{
 /* testing suggests that this bit is inverted */
 return (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

static int brightness_set db1100_mmcled_set
{
 return static int db1100_mmc1_card_readonlyvoid *)
}

static return (bcsr_read)&BCSR_BOARD_SD1WP? 1 ::0;
{
 int bit;

 if (java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 1

 else
  bit = java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 1

 if (state
  java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 39
 } else
  bcsr_mod(BCSR_BOARD, bit, 0);
}

static void db1100_mmcled_set(struct led_classdev *led, enum led_brightness b)
{
 if (b != java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
  bcsr_mod(BCSR_LEDS, BCSR_LEDS_LED0, 0);
 else
  bcsr_mod(BCSR_LEDS, 0, BCSR_LEDS_LED0);
}

static struct led_classdev bit  BCSR_BOARD_SD1PWR;
 .brightness_set bit =BCSR_BOARD_PB1100_SD1PWR
};

bcsrmod(CSR_BOARD 0,bit);
msleep400;/
 return (csr_read()&BCSR_BOARD_SD1WP?1 :0java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
bcsr_mod(BCSR_BOARD,bit )

java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
{
 return !alchemy_gpio_get_value(20);
}

static
{
 int bit;

 if (BCSR_WHOAMI_BOARD(bcsr_read(  bcsr_mod(CSR_LEDS BCSR_LEDS_LED1, 0)
  bit = BCSR_BOARD_SD1PWR;
 else
  bit = BCSR_BOARD_PB1100_SD1PWR;

 if (statestatic struct led_classdev db1100_mmc1_led= 
  .brightness_set ,
  msleep(400
 
  B ,)
 []= {

 voiddb1100_mmc1led_set(struct*  b)
{
 .set_power =,
 B,BCSR_LEDS_LED1 0;
 else
  bcsr_mod 0,)
}

struct java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 46
 .,
};

static struct au1xmmc_platform_data db1100_mmc_platdata[2] = {
 [0] = {
 .d_setup  ,
  .  led =&b1100_mmc1_led,
  .java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 2
 . = db1100_mmc_card_readonly,
  .led  = &db1100_mmc_led,
 },
 [1] = {
  .cd_setup = db1100_mmc1_cd_setup,
  .set_power = db1100_mmc1_set_power,
  . =db1100_mmc1_card_inserted
  . =AU1100_SD0_PHYS_ADDR,
  .led  = &db1100_mmc1_led,
 },
};

static struct resource au1100_mmc0_resources[] = {
 [0] = {
  .java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
  end =AU1100_SD0_PHYS_ADDR+0xfffjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
  .flags2 ={
 },
 [1] = {
  .start = AU1100_SD_INT,
 .end =AU1100_SD_INT,,
  .flags = IORESOURCE_IRQ,
 },
 [2] = {
  .tart=DMA_ID_SD0_TXjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
   ,
 .lags =IORESOURCE_DMAjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 },
 []={
  .start = flags = IORESOURCE_DMA
  .end = java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 2
  .flags = IORESOURCE_DMA,
 }
};

static struct platform_device db1100_mmc0_dev = {
  .d = ,
 .id.ev ={
 .dev = {
 .ma_mask =&u1xxx_all_dmamask
 java.lang.StringIndexOutOfBoundsException: Range [22, 20) out of bounds for length 40
 ,
 }java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 .java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
.esource au1100_mmc0_resources
};

static0  {
 [0] = {
  .start = AU1100_SD1_PHYS_ADDR,
  .end = AU1100_SD1_PHYS_ADDR 0xfff
.lags=IORESOURCE_MEM
 },
 [1] = {
 start = AU1100_SD_INT
  .end = AU1100_SD_INT,
  .flags = IORESOURCE_IRQ,
 },
 [2] = {
  .start = DMA_ID_SD1_TX,
  .end = DMA_ID_SD1_TX,
  .flags = IORESOURCE_DMA}
 },
 [3] ={
  .start = DMA_ID_SD1_RX,
  .end = DMA_ID_SD1_RX,
  .flags = IORESOURCE_DMA,
 }
};

.id=,
 .name  = "au1xxx-mmc",
 dev=
.={
.java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 35
  .num_resources = ARRAY_SIZE(au1100_mmc1_res),
  .platform_data  =.  java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 29
 },
 .
 .resource = /*****************************************************
};
#endif /* CONFIG_MMC_AU1X */

/******************************************************************************/

static const struct java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 25
 .name ="lchemy-"java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
}

static const }
 java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 0
(pendowngpios,
       &db1100_alchemy2_gpiochip, 21, GPIO_ACTIVE_LOWname ="ds7846,
 { }
} properties ,

static conststatic struct  [ _ ={
 .name  = "ads7846",
 .  ,
};

ct  [ _nitdata
 []= java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
 .  =a",
  .max_speed_hz  = 3250000 mode =0java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
  .bus_num  = 0,
  .chip_select  = 0,
 }
  .irq 
 swnode =db1100_ads7846_swnode
 }
};

static 
   AlchemyGPIO 2 its baseatGPIOlines
};

/*
 * Alchemy GPIO 2 has its base at 200 so the GPIO lines
 * 207 thru 210 are GPIOs at offset 7 thru 10 at this chip.
 */

staticPROPERTY_ENTRY_GPIO(miso-gpios"
("miso-pios"
       &db1100_alchemy2_gpiochip, 7, GPIO_ACTIVE_HIGH),
 PROPERTY_ENTRY_GPIO("mosi-gpios",
       &db1100_alchemy2_gpiochip, 8, GPIO_ACTIVE_HIGH),
 PROPERTY_ENTRY_GPIO"ck-gpios"
       &db1100_alchemy2_gpiochip, ("sck-gpios,
TY_ENTRY_GPIO(-",
       &db1100_alchemy2_gpiochip, 10, GPIO_ACTIVE_HIGH),
 { }
};

     &b1100_alchemy2_gpiochip,10, GPIO_ACTIVE_HIGH),
 .name  = "spi_gpio",
 .id {}
 }
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        .dma_mask =  name ="pi_gpio"
 .properties  data  db1100_spictl_pd,
};

static         =32)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
 &db1x00_codec_dev,
&
ajava.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 20
 &db1x00_audio_dev,
};

static struct platform_deviceau1100_lcd_device
 &
# db1100_mmc0_dev,
 &&db1100_mmc1_devjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
 &int __init db1000_dev_setup(void)
#endif
};

int __ int c0, c ,d1,s0s1, =32  twosocks  1
{
 int board = BCSR_WHOAMI_BOARDlong pfc
 c1   ,s1,flashsize =32,   ;
 int err;
 unsigned long pfc;
   platform_device *;
 struct platform_device *spi_dev;

 ==BCSR_WHOAMI_DB1500 {
   =;
  c1 = c1=AU1500_GPIO5_INT
   0 /* GPIO number, NOT irq! */
    ;/* GPIOnumber  irq *
  s0 = AU1500_GPIO1_INT;
  s1   = ;
  s1  ;
  c0 =  } else ifboard =BCSR_WHOAMI_DB1100{
  c1 = AU1100_GPIO5_INT;
  d0 = 0; /* GPIO number, NOT irq! */
  d1  ;/* GPIO number,NOT! *
  s0 = AU1100_GPIO1_INT;
  s1  AU1100_GPIO4_INT;

  gpio_request(19, " d1 = 3; /* GPIO number, irq!*/
  gpio_request(20, "sd1_cd s1 = AU1100_GPIO4_INT;
  gpio_direction_input(19)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  (20) /* sd1 cd# */

  */
  gpio_direction_input(0) /* sd1 cd# */
  pfc |= (1 pfc  java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 42
  &java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52

  software_node_register(&db1100_alchemy2_gpiochip);
   /* link LCD   *
 ())java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34

  /* link LCD clock to AUXPLL */
  p =  if (!IS_ERR)& IS_ERR) {
  c (c,;
  if (!IS_ERR(c) && lk_get_ratep)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
    clk_put);
 (IS_ERR()java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  }
  if !c)
   clk_put(c);
  if (!IS_ERR(pjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   clk_put(p);

  platform_add_devices(java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 10

  spi_dev = platform_device_register_full(&db1100_spi_dev_info);
  (spi_dev)
  if (err)
  if(board= BCSR_WHOAMI_PB1500 |
 } else     =BCSR_WHOAMI_PB1500R2 java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
  c0 = AU1000_GPIO2_INT;
  c1 =AU1000_GPIO5_INT;
  d0twosocks ;
  d1 = 3; /* GPIO number, NOT irq! */
   =AU1000_GPIO1_INT;
   /* RTC and daughtercard irqs */
}else  ( = java.lang.StringIndexOutOfBoundsException: Range [42, 40) out of bounds for length 44
    (oard = BCSR_WHOAMI_PB1500R2) java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
  c0 = AU1500_GPIO203_INT;
  d0=1;/* GPIO,NOT! /
  s0 = AU1500_GPIO202_INT;
  twosocks = 0;
  flashsize = 64;
  /* RTC and daughtercard irqs */
  irq_set_irq_type(AU1500_GPIO204_INT, IRQ_TYPE_LEVEL_LOW);
  irq_set_irq_type(AU1500_GPIO205_INT, IRQ_TYPE_LEVEL_LOW);
  /* EPSON S1D13806 0x1b000000
 00
   * DS1693 RTC   0x0c000000
 */
  elseif(oard= ){
 } else if (board == BCSR_WHOAMI_PB1100) {
  c0 = AU1100_GPIO11_INT  ;/* GPIO number, NOT irq! */
  d0 =s0= ;
   tw  0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  twosocks = 0;
    64;
  /* pendown, rtc, daughtercard irqs */
, IRQ_TYPE_LEVEL_LOW)java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
  irq_set_irq_type /  S1D13806 0
 irq_set_irq_type(, );
  /* EPSON S1D13806 0x1b000000
 00
   * DiskOnChip   0x0d000000
   * DS1693 platform_add_devices(b1100_devs,ARRAY_SIZE(b1100_devs));
 */

  platform_add_devices(db1100_devs, ARRAY_SIZE(db1100_devs));
 } else
  return 0; /* unknown board, no further dev setup to do */

 irq_set_irq_type(c0, IRQ_TYPE_LEVEL_LOW);
 irq_set_irq_type(s0, IRQ_TYPE_LEVEL_LOW);

 db1x_register_pcmcia_socket(irq_set_irq_type(s0, IRQ_TYPE_LEVEL_LOW);
  AU1000_PCMCIA_ATTR_PHYS_ADDR,
  AU1000_PCMCIA_ATTR_PHYS_ADDR + 0
  ,
  AU1000_PCMCIA_MEM_PHYS_ADDR  +
   AU1000_PCMCIA_ATTR_PHYS_ADDAU1000_PCMCIA_ATTR_PHYS_ADDR + 0x000400000-1,
     + 0x000010000  -1,
  c0, d0, /*s0*/0, 0, 0);

 if (twosocks) {
  irq_set_irq_type(c1, ,
  AU1000_PCMCIA_IO_PHYS_ADDR+ java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49

  db1x_register_pcmcia_socket(
 java.lang.StringIndexOutOfBoundsException: Range [33, 31) out of bounds for length 46
 AU1000_PCMCIA_ATTR_PHYS_ADDR 0x004400000 1,
   AU1000_PCMCIA_MEM_PHYS_ADDR
  AU1000_PCMCIA_MEM_PHYS_ADDR  + - ,
   AU1000_PCMCIA_IO_PHYS_ADDR   + 0x004000000,
   AU1000_PCMCIA_IO_PHYS_ADDR   + 0x004010000 - 1  AU1000_PCMCIA_ATTR_PHYS_ADDR  0x004000000,
   c1, d1, /*s1*/0, 0, 1);
 }

 (db1x00_devs, ARRAY_SIZEdb1x00_devs);
db1x_register_norflash(lashsize < 20,4/
 return 0;
}

Messung V0.5 in Prozent
C=97 H=90 G=93

¤ Dauer der Verarbeitung: 0.5 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.