Переглянути джерело

Blackfin: bf537-stamp: post: update old MMR style macros

The old MMR defines are being scrubbed, so convert the driver to use the
new standard helper macros.

For the GPIO MMR usage, convert to the new GPIO framework.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike Frysinger 14 роки тому
батько
коміт
0049053ff3
2 змінених файлів з 75 додано та 131 видалено
  1. 27 27
      board/bf537-stamp/post-memory.c
  2. 48 104
      board/bf537-stamp/post.c

+ 27 - 27
board/bf537-stamp/post-memory.c

@@ -97,19 +97,19 @@ void post_init_uart(int sclk)
 	for (divisor = 0; sclk > 0; divisor++)
 	for (divisor = 0; sclk > 0; divisor++)
 		sclk -= 57600 * 16;
 		sclk -= 57600 * 16;
 
 
-	*pPORTF_FER = 0x000F;
-	*pPORTH_FER = 0xFFFF;
+	bfin_write_PORTF_FER(0x000F);
+	bfin_write_PORTH_FER(0xFFFF);
 
 
-	*pUART_GCTL = 0x00;
-	*pUART_LCR = 0x83;
+	bfin_write_UART_GCTL(0x00);
+	bfin_write_UART_LCR(0x83);
 	SSYNC();
 	SSYNC();
-	*pUART_DLL = (divisor & 0xFF);
+	bfin_write_UART_DLL(divisor & 0xFF);
 	SSYNC();
 	SSYNC();
-	*pUART_DLH = ((divisor >> 8) & 0xFF);
+	bfin_write_UART_DLH((divisor >> 8) & 0xFF);
 	SSYNC();
 	SSYNC();
-	*pUART_LCR = 0x03;
+	bfin_write_UART_LCR(0x03);
 	SSYNC();
 	SSYNC();
-	*pUART_GCTL = 0x01;
+	bfin_write_UART_GCTL(0x01);
 	SSYNC();
 	SSYNC();
 }
 }
 
 
@@ -121,8 +121,8 @@ void post_out_buff(char *buff)
 		;
 		;
 	i = 0;
 	i = 0;
 	while ((buff[i] != '\0') && (i != 100)) {
 	while ((buff[i] != '\0') && (i != 100)) {
-		while (!(*pUART_LSR & 0x20)) ;
-		*pUART_THR = buff[i];
+		while (!(bfin_read_pUART_LSR() & 0x20)) ;
+		bfin_write_UART_THR(buff[i]);
 		SSYNC();
 		SSYNC();
 		i++;
 		i++;
 	}
 	}
@@ -138,15 +138,15 @@ int post_key_pressed(void)
 	int i, n;
 	int i, n;
 	unsigned short value;
 	unsigned short value;
 
 
-	*pPORTF_FER &= ~PF5;
-	*pPORTFIO_DIR &= ~PF5;
-	*pPORTFIO_INEN |= PF5;
+	bfin_write_PORTF_FER(bfin_read_PORTF_FER() & ~PF5);
+	bfin_write_PORTFIO_DIR(bfin_read_PORTFIO_DIR() & ~PF5);
+	bfin_write_PORTFIO_INEN(bfin_read_PORTFIO_INEN() | PF5);
 	SSYNC();
 	SSYNC();
 
 
 	post_out_buff("########Press SW10 to enter Memory POST########: 3\0");
 	post_out_buff("########Press SW10 to enter Memory POST########: 3\0");
 	for (i = 0; i < KEY_LOOP; i++) {
 	for (i = 0; i < KEY_LOOP; i++) {
-		value = *pPORTFIO & PF5;
-		if (*pUART0_RBR == 0x0D) {
+		value = bfin_read_PORTFIO() & PF5;
+		if (bfin_read_UART0_RBR() == 0x0D) {
 			value = 0;
 			value = 0;
 			goto key_pressed;
 			goto key_pressed;
 		}
 		}
@@ -158,8 +158,8 @@ int post_key_pressed(void)
 	post_out_buff("\b2\0");
 	post_out_buff("\b2\0");
 
 
 	for (i = 0; i < KEY_LOOP; i++) {
 	for (i = 0; i < KEY_LOOP; i++) {
-		value = *pPORTFIO & PF5;
-		if (*pUART0_RBR == 0x0D) {
+		value = bfin_read_PORTFIO() & PF5;
+		if (bfin_read_UART0_RBR() == 0x0D) {
 			value = 0;
 			value = 0;
 			goto key_pressed;
 			goto key_pressed;
 		}
 		}
@@ -171,8 +171,8 @@ int post_key_pressed(void)
 	post_out_buff("\b1\0");
 	post_out_buff("\b1\0");
 
 
 	for (i = 0; i < KEY_LOOP; i++) {
 	for (i = 0; i < KEY_LOOP; i++) {
-		value = *pPORTFIO & PF5;
-		if (*pUART0_RBR == 0x0D) {
+		value = bfin_read_PORTFIO() & PF5;
+		if (bfin_read_UART0_RBR() == 0x0D) {
 			value = 0;
 			value = 0;
 			goto key_pressed;
 			goto key_pressed;
 		}
 		}
@@ -193,13 +193,13 @@ int post_key_pressed(void)
 void post_init_pll(int mult, int div)
 void post_init_pll(int mult, int div)
 {
 {
 
 
-	*pSIC_IWR = 0x01;
-	*pPLL_CTL = (mult << 9);
-	*pPLL_DIV = div;
+	bfin_write_SIC_IWR(0x01);
+	bfin_write_PLL_CTL((mult << 9));
+	bfin_write_PLL_DIV(div);
 	asm("CLI R2;");
 	asm("CLI R2;");
 	asm("IDLE;");
 	asm("IDLE;");
 	asm("STI R2;");
 	asm("STI R2;");
-	while (!(*pPLL_STAT & 0x20)) ;
+	while (!(bfin_read_PLL_STAT() & 0x20)) ;
 }
 }
 
 
 int post_init_sdram(int sclk)
 int post_init_sdram(int sclk)
@@ -302,15 +302,15 @@ int post_init_sdram(int sclk)
 
 
 	SSYNC();
 	SSYNC();
 
 
-	*pEBIU_SDGCTL |= 0x1000000;
+	bfin_write_EBIU_SDGCTL(bfin_write_EBIU_SDGCTL() | 0x1000000);
 	/* Set the SDRAM Refresh Rate control register based on SSCLK value */
 	/* Set the SDRAM Refresh Rate control register based on SSCLK value */
-	*pEBIU_SDRRC = mem_SDRRC;
+	bfin_write_EBIU_SDRRC(mem_SDRRC);
 
 
 	/* SDRAM Memory Bank Control Register */
 	/* SDRAM Memory Bank Control Register */
-	*pEBIU_SDBCTL = mem_SDBCTL;
+	bfin_write_EBIU_SDBCTL(mem_SDBCTL);
 
 
 	/* SDRAM Memory Global Control Register */
 	/* SDRAM Memory Global Control Register */
-	*pEBIU_SDGCTL = mem_SDGCTL;
+	bfin_write_EBIU_SDGCTL(mem_SDGCTL);
 	SSYNC();
 	SSYNC();
 	return mem_SDRRC;
 	return mem_SDRRC;
 }
 }

+ 48 - 104
board/bf537-stamp/post.c

@@ -12,6 +12,7 @@
 #include <config.h>
 #include <config.h>
 #include <command.h>
 #include <command.h>
 #include <asm/blackfin.h>
 #include <asm/blackfin.h>
+#include <asm/gpio.h>
 
 
 /* Using sw10-PF5 as the hotkey */
 /* Using sw10-PF5 as the hotkey */
 int post_hotkeys_pressed(void)
 int post_hotkeys_pressed(void)
@@ -20,14 +21,13 @@ int post_hotkeys_pressed(void)
 	int i;
 	int i;
 	unsigned short value;
 	unsigned short value;
 
 
-	*pPORTF_FER &= ~PF5;
-	*pPORTFIO_DIR &= ~PF5;
-	*pPORTFIO_INEN |= PF5;
+	gpio_request(GPIO_PF5, "post");
+	gpio_direction_input(GPIO_PF5);
 
 
 	printf("########Press SW10 to enter Memory POST########: %2d ", delay);
 	printf("########Press SW10 to enter Memory POST########: %2d ", delay);
 	while (delay--) {
 	while (delay--) {
 		for (i = 0; i < 100; i++) {
 		for (i = 0; i < 100; i++) {
-			value = *pPORTFIO & PF5;
+			value = gpio_get_value(GPIO_PF5);
 			if (value != 0) {
 			if (value != 0) {
 				break;
 				break;
 			}
 			}
@@ -43,6 +43,8 @@ int post_hotkeys_pressed(void)
 		printf("Hotkey has been pressed, Enter POST . . . . . .\n");
 		printf("Hotkey has been pressed, Enter POST . . . . . .\n");
 		return 1;
 		return 1;
 	}
 	}
+
+	gpio_free(GPIO_PF5);
 }
 }
 
 
 int uart_post_test(int flags)
 int uart_post_test(int flags)
@@ -106,34 +108,24 @@ int flash_post_test(int flags)
  ****************************************************/
  ****************************************************/
 int led_post_test(int flags)
 int led_post_test(int flags)
 {
 {
-	*pPORTF_FER &= ~(PF6 | PF7 | PF8 | PF9 | PF10 | PF11);
-	*pPORTFIO_DIR |= PF6 | PF7 | PF8 | PF9 | PF10 | PF11;
-	*pPORTFIO_INEN &= ~(PF6 | PF7 | PF8 | PF9 | PF10 | PF11);
-	*pPORTFIO &= ~(PF6 | PF7 | PF8 | PF9 | PF10 | PF11);
-	udelay(1000000);
-	printf("LED1 on");
-	*pPORTFIO |= PF6;
-	udelay(1000000);
-	printf("\b\b\b\b\b\b\b");
-	printf("LED2 on");
-	*pPORTFIO |= PF7;
-	udelay(1000000);
-	printf("\b\b\b\b\b\b\b");
-	printf("LED3 on");
-	*pPORTFIO |= PF8;
-	udelay(1000000);
-	printf("\b\b\b\b\b\b\b");
-	printf("LED4 on");
-	*pPORTFIO |= PF9;
-	udelay(1000000);
-	printf("\b\b\b\b\b\b\b");
-	printf("LED5 on");
-	*pPORTFIO |= PF10;
-	udelay(1000000);
-	printf("\b\b\b\b\b\b\b");
-	printf("lED6 on");
-	*pPORTFIO |= PF11;
-	printf("\b\b\b\b\b\b\b ");
+	unsigned int leds[] = {
+		GPIO_PF6, GPIO_PF7, GPIO_PF8,
+		GPIO_PF9, GPIO_PF10, GPIO_PF11,
+	};
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(leds); ++i) {
+		gpio_request(leds[i], "post");
+		gpio_direction_output(leds[i], 0);
+
+		printf("LED%i on", i + 1);
+		gpio_set_value(leds[i], 1);
+		udelay(1000000);
+		printf("\b\b\b\b\b\b\b");
+
+		gpio_free(leds[i]);
+	}
+
 	return 0;
 	return 0;
 }
 }
 
 
@@ -143,88 +135,40 @@ int led_post_test(int flags)
  ************************************************/
  ************************************************/
 int button_post_test(int flags)
 int button_post_test(int flags)
 {
 {
+	unsigned int buttons[] = {
+		GPIO_PF2, GPIO_PF3, GPIO_PF4, GPIO_PF5,
+	};
+	unsigned int sws[] = { 13, 12, 11, 10, };
 	int i, delay = 5;
 	int i, delay = 5;
 	unsigned short value = 0;
 	unsigned short value = 0;
 	int result = 0;
 	int result = 0;
 
 
-	*pPORTF_FER &= ~(PF5 | PF4 | PF3 | PF2);
-	*pPORTFIO_DIR &= ~(PF5 | PF4 | PF3 | PF2);
-	*pPORTFIO_INEN |= (PF5 | PF4 | PF3 | PF2);
+	for (i = 0; i < ARRAY_SIZE(buttons); ++i) {
+		gpio_request(buttons[i], "post");
+		gpio_direction_input(buttons[i]);
 
 
-	printf("\n--------Press SW10: %2d ", delay);
-	while (delay--) {
-		for (i = 0; i < 100; i++) {
-			value = *pPORTFIO & PF5;
-			if (value != 0) {
-				break;
+		delay = 5;
+		printf("\n--------Press SW%i: %2d ", sws[i], delay);
+		while (delay--) {
+			for (i = 0; i < 100; i++) {
+				value = gpio_get_value(buttons[i]);
+				if (value != 0)
+					break;
+				udelay(10000);
 			}
 			}
-			udelay(10000);
+			printf("\b\b\b%2d ", delay);
 		}
 		}
-		printf("\b\b\b%2d ", delay);
-	}
-	if (value != 0)
-		printf("\b\bOK");
-	else {
-		result = -1;
-		printf("\b\bfailed");
-	}
-
-	delay = 5;
-	printf("\n--------Press SW11: %2d ", delay);
-	while (delay--) {
-		for (i = 0; i < 100; i++) {
-			value = *pPORTFIO & PF4;
-			if (value != 0) {
-				break;
-			}
-			udelay(10000);
+		if (value != 0)
+			puts("\b\bOK");
+		else {
+			result = -1;
+			puts("\b\bfailed");
 		}
 		}
-		printf("\b\b\b%2d ", delay);
-	}
-	if (value != 0)
-		printf("\b\bOK");
-	else {
-		result = -1;
-		printf("\b\bfailed");
-	}
 
 
-	delay = 5;
-	printf("\n--------Press SW12: %2d ", delay);
-	while (delay--) {
-		for (i = 0; i < 100; i++) {
-			value = *pPORTFIO & PF3;
-			if (value != 0) {
-				break;
-			}
-			udelay(10000);
-		}
-		printf("\b\b\b%2d ", delay);
-	}
-	if (value != 0)
-		printf("\b\bOK");
-	else {
-		result = -1;
-		printf("\b\bfailed");
+		gpio_free(buttons[i]);
 	}
 	}
 
 
-	delay = 5;
-	printf("\n--------Press SW13: %2d ", delay);
-	while (delay--) {
-		for (i = 0; i < 100; i++) {
-			value = *pPORTFIO & PF2;
-			if (value != 0) {
-				break;
-			}
-			udelay(10000);
-		}
-		printf("\b\b\b%2d ", delay);
-	}
-	if (value != 0)
-		printf("\b\bOK");
-	else {
-		result = -1;
-		printf("\b\bfailed");
-	}
-	printf("\n");
+	puts("\n");
+
 	return result;
 	return result;
 }
 }