Example #1
0
static int __init lpc32xx_dma_init(void)
{
	int ret;

	ret = request_irq(IRQ_LPC32XX_DMA, dma_irq_handler, 0, "DMA", NULL);
	if (ret) {
		printk(KERN_CRIT "Wow!  Can't register IRQ for DMA\n");
		goto out;
	}

	/* Get DMA clock */
	dma_ctrl.clk = clk_get(NULL, "clk_dmac");
	if (IS_ERR(dma_ctrl.clk)) {
		ret = -ENODEV;
		goto errout;
	}
	clk_enable(dma_ctrl.clk);

	/* Clear DMA controller */
	__raw_writel(1, DMA_CONFIG(DMAIOBASE));
	__raw_writel(0xFF, DMA_INT_TC_CLEAR(DMAIOBASE));
	__raw_writel(0xFF, DMA_INT_ERR_CLEAR(DMAIOBASE));

	/* Clock is only enabled when needed to save power */
	clk_disable(dma_ctrl.clk);

	return 0;

errout:
	free_irq(IRQ_LPC32XX_DMA, NULL);

out:
	return ret;
}
Example #2
0
static void dma_clocks_down(void)
{
	dma_ctrl.num_clks--;

	/* Disable DMA clock if needed */
	if (dma_ctrl.num_clks == 0)
	{
		__raw_writel(0, DMA_CONFIG(DMAIOBASE));
		clk_disable(dma_ctrl.clk);
	}
}
Example #3
0
static void dma_clocks_up(void)
{
	/* Enable DMA clock if needed */
	if (dma_ctrl.num_clks == 0)
	{
		clk_enable(dma_ctrl.clk);
		__raw_writel(DMAC_CTRL_ENABLE, DMA_CONFIG(DMAIOBASE));
	}

	dma_ctrl.num_clks++;
}
Example #4
0
int main(void) {
  
  u8 loop = 1;
	char string[256];
	//char string1[256];
	uint16_t value;
	uint16_t sizestring;
  int icase = 0;
  initPA15();
  init_USART1(BT_BAUD);
	systick_init();
	led_Init();
	button_init();
	UART2_CONFIG(9600);// 
	DMA_CONFIG();
    
  setPA15On();
  togglePA15();
	


  while(loop){ 
    //Send data through the bluetooth communication		
			if (GPIOA->IDR & 0x0001)
			{
			if (CheckTick(delay_1,500))
			{
				delay_1 = GetTickCount();
				USART_puts(USART1, "troi oi 1 2 3 4 5 6 7 8 9 10\n");
				led12();
			}
			}
			if (CheckTick(delay_2,1000))
			{
					delay_2 = GetTickCount();
					//led13();
			}
			if (CheckTick(delay_3,5000))
			{
				delay_3 = GetTickCount();
				led14();
			}
			
			if (CheckTick(delay_4,100))
			{
				delay_4 = GetTickCount();
				while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
				//while(DMA_GetFlagStatus(DMA1_Stream2,DMA_FLAG_TCIF1) == RESET);
				value = USART_ReceiveData(USART1);
				memset(string,0,sizeof(string[0])*256); // Clear all to 0 so string properly represented
				sprintf(string,"%c",value);
				//sizestring = sizeof(string);
				//sprintf(string1,"%c",sizestring);
				if (string != NULL)
				{

					//USART_puts(USART1,string);
					if 			(string != NULL) icase = 1;
					else if (memchr(string, '2', sizeof(string))) icase = 2;
					else if (memchr(string, '3', sizeof(string))) icase = 3;
					else if (memchr(string, '4', sizeof(string))) icase = 4;
					else if (memchr(string, '5', sizeof(string))) icase = 5;
					//else icase = 6;
					switch (icase)
					{
						case 1:
						{
							USART_puts(USART1,string);
							icase = 0;
							led15();
						}
						break;
						case 2:
						{
							USART_puts(USART1,"di xuong");
							icase = 0;
							//led14();
						}
						break;
						case 3:
						{
							USART_puts(USART1,"sang trai");
							icase = 0;
							//led13();
						}
						break;
						case 4:
						{
							USART_puts(USART1,"sang phai");
							icase = 0;
						}
						break;
						case 5:
						{
							USART_puts(USART1,"can bang");
							icase = 0;
						}
						break;
//						case 6:
//						{
//							//USART_puts(USART1,string);
//							icase = 0;
//						}
//						break;
						default: break;
						
					}
					
					//usart_send_string(string);
					//USART_SendData(USART1,value);
				}
				else
				{
					//usart_send_string(string);
				}
				led15();
			}
			if (CheckTick(delay_5,250))
		{
			delay_5 = GetTickCount();
		}
    /* Disable the UART connection */
    //USART_Cmd(USART1, DISABLE);
}
}