Exemplo n.º 1
0
int init_lcd_pin_direction() {
//	GPIO2			LCD
//	1 	+5V 	-> 	2 VDD
//	2 	Ground 	->	1 GND
//
//	3 	+3.3V	EMPTY
//	4 	Ground	EMPTY
//
//
//	5 	PB0 (TWI0-SCK)	->	4 RS
//	6 	PG11 (USBH_EN)	->	5 R/W
//	7 	PB1 (TWI0-SDA) 	->	6 E
//
//	8 	PG10 (VGA_DIS)	->	7 DB0
//	10 	PG9 (LED1)		->	8 DB1
//	11 	PB3 			->  9 DB2
//	12 	PE11			->  10 DB3
//	13 	PB4 			->  11 DB4
//	14 	PE10			->  12 DB5
//	16 	PE9				->  13 DB6
//	18 	PE8				->  14 DB7

	//	9 	PB2 (PWM0) 		ERROR
	//	15 	PB10 			ERROR
	//	17 	PB15 (TWI1-SCK) ERROR
	int ret;

	//init gpio
	ret = sunxi_gpio_init();
	if(ret) {
		printf("sunxi_gpio_init ERROR\n");
		return -1;
	}
/*	//RS, R/W, E
	sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPG(11), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUNXI_GPIO_OUTPUT);

	//DB0 - DB7
	sunxi_gpio_set_cfgpin(SUNXI_GPG(10), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPG(9),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(3),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(11), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(4),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(10), SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(9),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPE(8),  SUNXI_GPIO_OUTPUT);
*/
	sunxi_gpio_set_cfgpin(SUNXI_GPA(0),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPA(1),  SUNXI_GPIO_OUTPUT);

	sunxi_gpio_set_cfgpin(SUNXI_GPB(0),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPB(1),  SUNXI_GPIO_OUTPUT);

	sunxi_gpio_set_cfgpin(SUNXI_GPI(0),  SUNXI_GPIO_OUTPUT);
	sunxi_gpio_set_cfgpin(SUNXI_GPI(1),  SUNXI_GPIO_OUTPUT);

	sunxi_gpio_set_cfgpin(SUNXI_GPG(9),  SUNXI_GPIO_OUTPUT);
	return 0;
}
Exemplo n.º 2
0
int do_gpio_test(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {

	int i;

	for(i = 0; i < 18; i++) {
		gpio_direction_input(SUNXI_GPA(i));
		gpio_direction_output(SUNXI_GPA(i), 1);
	}
}
Exemplo n.º 3
0
int sunxi_gmac_initialize(bd_t *bis)
{
	int pin;
	struct sunxi_ccm_reg *const ccm =
		(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;

	/* Set up clock gating */
	setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);

	/* Set MII clock */
#ifdef CONFIG_RGMII
	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII |
		CCM_GMAC_CTRL_GPIT_RGMII);
#else
	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_MII |
		CCM_GMAC_CTRL_GPIT_MII);
#endif

	/*
	 * In order for the gmac nic to work reliable on the Bananapi, we
	 * need to set bits 10-12 GTXDC "GMAC Transmit Clock Delay Chain"
	 * of the GMAC clk register to 3.
	 */
#ifdef CONFIG_TARGET_BANANAPI
	setbits_le32(&ccm->gmac_clk_cfg, 0x3 << 10);
#endif

	/* Configure pin mux settings for GMAC */
	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
#ifdef CONFIG_RGMII
		/* skip unused pins in RGMII mode */
		if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14))
			continue;
#endif
		sunxi_gpio_set_cfgpin(pin, SUN7I_GPA0_GMAC);
		sunxi_gpio_set_drv(pin, 3);
	}

#ifdef CONFIG_RGMII
	return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
#else
	return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII);
#endif
}
Exemplo n.º 4
0
int sunxi_gmac_initialize(bd_t *bis)
{
	int pin;
	struct sunxi_ccm_reg *const ccm =
		(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;

	/* Set up clock gating */
	setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);

	/* Set MII clock */
#ifdef CONFIG_RGMII
	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII |
		CCM_GMAC_CTRL_GPIT_RGMII);
#else
	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_MII |
		CCM_GMAC_CTRL_GPIT_MII);
#endif

	/* Configure pin mux settings for GMAC */
	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
#ifdef CONFIG_RGMII
		/* skip unused pins in RGMII mode */
		if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14))
		    continue;
#endif
		sunxi_gpio_set_cfgpin(pin, 5);
		sunxi_gpio_set_drv(pin, 3);
	}

#ifdef CONFIG_RGMII
	designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
#else
	designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII);
#endif

	return 0;
}
Exemplo n.º 5
0
int sunxi_gmac_initialize(bd_t *bis)
{
	int pin;
	struct sunxi_ccm_reg *const ccm =
		(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;

	/* Set up clock gating */
#ifdef CONFIG_SUNXI_GEN_SUN6I
	setbits_le32(&ccm->ahb_reset0_cfg, 0x1 << AHB_RESET_OFFSET_GMAC);
	setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_GMAC);
#else
	setbits_le32(&ccm->ahb_gate1, 0x1 << AHB_GATE_OFFSET_GMAC);
#endif

	/* Set MII clock */
#ifdef CONFIG_RGMII
	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII |
		CCM_GMAC_CTRL_GPIT_RGMII);
	setbits_le32(&ccm->gmac_clk_cfg,
		     CCM_GMAC_CTRL_TX_CLK_DELAY(CONFIG_GMAC_TX_DELAY));
#else
	setbits_le32(&ccm->gmac_clk_cfg, CCM_GMAC_CTRL_TX_CLK_SRC_MII |
		CCM_GMAC_CTRL_GPIT_MII);
#endif

#ifndef CONFIG_MACH_SUN6I
	/* Configure pin mux settings for GMAC */
	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(16); pin++) {
#ifdef CONFIG_RGMII
		/* skip unused pins in RGMII mode */
		if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14))
			continue;
#endif
		sunxi_gpio_set_cfgpin(pin, SUN7I_GPA_GMAC);
		sunxi_gpio_set_drv(pin, 3);
	}
#elif defined CONFIG_RGMII
	/* Configure sun6i RGMII mode pin mux settings */
	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++) {
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
		sunxi_gpio_set_drv(pin, 3);
	}
	for (pin = SUNXI_GPA(9); pin <= SUNXI_GPA(14); pin++) {
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
		sunxi_gpio_set_drv(pin, 3);
	}
	for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(20); pin++) {
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
		sunxi_gpio_set_drv(pin, 3);
	}
	for (pin = SUNXI_GPA(25); pin <= SUNXI_GPA(27); pin++) {
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
		sunxi_gpio_set_drv(pin, 3);
	}
#elif defined CONFIG_GMII
	/* Configure sun6i GMII mode pin mux settings */
	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(27); pin++) {
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
		sunxi_gpio_set_drv(pin, 2);
	}
#else
	/* Configure sun6i MII mode pin mux settings */
	for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++)
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
	for (pin = SUNXI_GPA(8); pin <= SUNXI_GPA(9); pin++)
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
	for (pin = SUNXI_GPA(11); pin <= SUNXI_GPA(14); pin++)
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
	for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(24); pin++)
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
	for (pin = SUNXI_GPA(26); pin <= SUNXI_GPA(27); pin++)
		sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
#endif

#ifdef CONFIG_DM_ETH
	return 0;
#else
# ifdef CONFIG_RGMII
	return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
# elif defined CONFIG_GMII
	return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_GMII);
# else
	return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII);
# endif
#endif
}
Exemplo n.º 6
0
int main(int argc, const char* argv[] ) {

	//30ms delay
	delay(30);

	init_lcd_pin_direction();
	delay(30);
/*
	lcd_set_RS(0);
	lcd_set_RW(0);
	lcd_set_E(0);
	lcd_set_data(0x3A);

	lcd_set_E(1);
	delay(30);
	lcd_set_E(0);

	lcd_set_data(0x0F);

	lcd_set_E(1);
	delay(30);
	lcd_set_E(0);
*/
	int pin;
	char *port;
	int i, k, val;
	val = 0;

	printf("app startup\n");
	printf("argv[1]:%s  argv[2]:%s\n", argv[1], argv[2]);

	port = argv[1];
	pin = atoi(argv[2]);

	printf("port:%s\n",port);
	printf("pin:%d\n",pin);

	if(!strcmp(port, "G")) {
		while(1) {
			//sunxi_gpio_output(SUNXI_GPG(9),  0);
			sunxi_gpio_output(SUNXI_GPG(pin),  0);
			delay(3000);
			//sunxi_gpio_output(SUNXI_GPG(9),  1);
			sunxi_gpio_output(SUNXI_GPG(pin),  1);
			delay(3000);
		};
	}
	else if(!strcmp(port, "A")) {
		while(1) {
			sunxi_gpio_output(SUNXI_GPA(pin),  0);
			//sunxi_gpio_output(SUNXI_GPA(pin),  0);
			delay(3000);
			sunxi_gpio_output(SUNXI_GPA(pin),  1);
			//sunxi_gpio_output(SUNXI_GPA(pin),  1);
			delay(3000);
		};
	}
	else if(!strcmp(port, "B")) {
		while(1) {
			sunxi_gpio_output(SUNXI_GPB(pin),  0);
			//sunxi_gpio_output(SUNXI_GPA(pin),  0);
			delay(3000);
			sunxi_gpio_output(SUNXI_GPB(pin),  1);
			//sunxi_gpio_output(SUNXI_GPA(pin),  1);
			delay(3000);
		};
	}
	else if(!strcmp(port, "I")) {
		while(1) {
			sunxi_gpio_output(SUNXI_GPI(pin),  0);
			//sunxi_gpio_output(SUNXI_GPA(pin),  0);
			delay(3000);
			sunxi_gpio_output(SUNXI_GPI(pin),  1);
			//sunxi_gpio_output(SUNXI_GPA(pin),  1);
			delay(3000);
		};
	}
	return 0;
}
Exemplo n.º 7
0
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1
} ;

static volatile int    pinPass = -1 ;
static volatile char    pinPassName[10] = {};
static pthread_mutex_t pinMutex ;

// ISR Data

static void (*isrFunctions [278])(void) ;

static int pinToGpio[278] =
{
  SUNXI_GPA(0), SUNXI_GPA(1), SUNXI_GPA(2), SUNXI_GPA(3), SUNXI_GPA(4), SUNXI_GPA(5),
  SUNXI_GPA(6), SUNXI_GPA(7), SUNXI_GPA(8), SUNXI_GPA(9), SUNXI_GPA(10), SUNXI_GPA(11),
  SUNXI_GPA(12), SUNXI_GPA(13), SUNXI_GPA(14), SUNXI_GPA(15), SUNXI_GPA(16), SUNXI_GPA(17),
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPB(0), SUNXI_GPB(1), SUNXI_GPB(2), SUNXI_GPB(3), SUNXI_GPB(4), SUNXI_GPB(5),
  SUNXI_GPB(6), SUNXI_GPB(7), SUNXI_GPB(8), SUNXI_GPB(9), SUNXI_GPB(10), SUNXI_GPB(11),
  SUNXI_GPB(12), SUNXI_GPB(13), SUNXI_GPB(14), SUNXI_GPB(15), SUNXI_GPB(16), SUNXI_GPB(17),
  SUNXI_GPB(18), SUNXI_GPB(19), SUNXI_GPB(20), SUNXI_GPB(21), SUNXI_GPB(22), SUNXI_GPB(23),
  -1, -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPC(0), SUNXI_GPC(1), SUNXI_GPC(2), SUNXI_GPC(3), SUNXI_GPC(4), SUNXI_GPC(5),
  SUNXI_GPC(6), SUNXI_GPC(7), SUNXI_GPC(8), SUNXI_GPC(9), SUNXI_GPC(10), SUNXI_GPC(11),
  SUNXI_GPC(12), SUNXI_GPC(13), SUNXI_GPC(14), SUNXI_GPC(15), SUNXI_GPC(16), SUNXI_GPC(17),
  SUNXI_GPC(18), SUNXI_GPC(19), SUNXI_GPC(20), SUNXI_GPC(21), SUNXI_GPC(22), SUNXI_GPC(23),
  SUNXI_GPC(24),
  -1, -1, -1, -1, -1, -1, -1,
  SUNXI_GPD(0), SUNXI_GPD(1), SUNXI_GPD(2), SUNXI_GPD(3), SUNXI_GPD(4), SUNXI_GPD(5),