Exemplo n.º 1
0
void pnx4008_uart_init(void)
{
	u32 tmp;
	int i = UART_FIFO_SIZE;

	__raw_writel(0xC1, UART5_BASE_VA + UART_FCR_OFFSET);
	__raw_writel(0xC1, UART3_BASE_VA + UART_FCR_OFFSET);

	/* Send a NULL to fix the UART HW bug */
	__raw_writel(0x00, UART5_BASE_VA);
	__raw_writel(0x00, UART3_BASE_VA);

	while (i--) {
		tmp = __raw_readl(UART5_BASE_VA);
		tmp = __raw_readl(UART3_BASE_VA);
	}
	__raw_writel(0, UART5_BASE_VA + UART_FCR_OFFSET);
	__raw_writel(0, UART3_BASE_VA + UART_FCR_OFFSET);

	/* setup wakeup interrupt */
	start_int_set_rising_edge(SE_U3_RX_INT);
	start_int_ack(SE_U3_RX_INT);
	start_int_umask(SE_U3_RX_INT);

	start_int_set_rising_edge(SE_U5_RX_INT);
	start_int_ack(SE_U5_RX_INT);
	start_int_umask(SE_U5_RX_INT);
}
Exemplo n.º 2
0
void pnx4008_uart_init(void)
{
	u32 tmp;
	int i = UART_FIFO_SIZE;

	__raw_writel(0xC1, UART5_BASE_VA + UART_FCR_OFFSET);
	__raw_writel(0xC1, UART3_BASE_VA + UART_FCR_OFFSET);

	
	__raw_writel(0x00, UART5_BASE_VA);
	__raw_writel(0x00, UART3_BASE_VA);

	while (i--) {
		tmp = __raw_readl(UART5_BASE_VA);
		tmp = __raw_readl(UART3_BASE_VA);
	}
	__raw_writel(0, UART5_BASE_VA + UART_FCR_OFFSET);
	__raw_writel(0, UART3_BASE_VA + UART_FCR_OFFSET);

	
	start_int_set_rising_edge(SE_U3_RX_INT);
	start_int_ack(SE_U3_RX_INT);
	start_int_umask(SE_U3_RX_INT);

	start_int_set_rising_edge(SE_U5_RX_INT);
	start_int_ack(SE_U5_RX_INT);
	start_int_umask(SE_U5_RX_INT);
}
Exemplo n.º 3
0
/*initialize the device*/
static int pnx_keypad_probe(struct device *dev)
{
	int tmp;

	printk(KERN_INFO PKMOD "PNX4008 Keypad Driver\n");
	/* printk("%s %s\n", __TIME__, __DATE__); */

	if (!request_region(PNX4008_KEYSCAN_BASE, 0x1000, MODULE_NAME)) {
		printk(KERN_ERR PKMOD
		       "KS (keypad) registers are already in use\n");
		pnx_keypad_remove(dev);
		return -EBUSY;
	}
	set_bit(KEYPAD_REGION_INITED, &pnx_keypad_status);

#ifdef KS_USE_ROWS_6_7
	tmp = pnx4008_gpio_register_pin(GPIO_02);
	if (tmp < 0) {
		printk(KERN_ERR PKMOD "failed to register GPIO2\n");
		pnx_keypad_remove(dev);
		return tmp;
	}
	pnx4008_gpio_set_pin_mux(GPIO_02, 1);	/*set to MUX function */
	set_bit(KEYPAD_GPIO2_MUX_INITED, &pnx_keypad_status);

	tmp = pnx4008_gpio_register_pin(GPIO_03);
	if (tmp < 0) {
		printk(KERN_ERR PKMOD "failed to register GPIO3\n");
		pnx_keypad_remove(dev);
		return tmp;
	}
	pnx4008_gpio_set_pin_mux(GPIO_03, 1);	/*set to MUX function */
	set_bit(KEYPAD_GPIO3_MUX_INITED, &pnx_keypad_status);
#endif

	pnx_keypad_dev_init(&pnx_keypad_dev);	/*initialize device fields */
	input_register_device(&pnx_keypad_dev);
	pnx4008_kbd_clock_control(1);	/*enable clock */
	pnx_keypad_reg_init();	/*setup registers */

	/*setup wakeup interrupt */
	start_int_set_rising_edge(SE_KEY_IRQ);
	start_int_ack(SE_KEY_IRQ);
	start_int_umask(SE_KEY_IRQ);

	set_bit(KEYPAD_DEVICE_INITED, &pnx_keypad_status);

	/*interrupt may be triggered even if keypad clock is disabled */
	tmp = request_irq(KEY_IRQ, pnx_keypad_interrupt,
			  0, MODULE_NAME, &pnx_keypad_dev);
	if (tmp < 0) {
		printk(KERN_ERR PKMOD "failed to register irq\n");
		pnx_keypad_remove(dev);
		return tmp;
	}
	set_bit(KEYPAD_IRQ_INITED, &pnx_keypad_status);
	return 0;
}
Exemplo n.º 4
0
static void pnx4008_set_usb_bits(void)
{
    start_int_set_falling_edge(SE_USB_OTG_ATX_INT_N);
    start_int_ack(SE_USB_OTG_ATX_INT_N);
    start_int_umask(SE_USB_OTG_ATX_INT_N);

    start_int_set_rising_edge(SE_USB_OTG_TIMER_INT);
    start_int_ack(SE_USB_OTG_TIMER_INT);
    start_int_umask(SE_USB_OTG_TIMER_INT);

    start_int_set_rising_edge(SE_USB_I2C_INT);
    start_int_ack(SE_USB_I2C_INT);
    start_int_umask(SE_USB_I2C_INT);

    start_int_set_rising_edge(SE_USB_INT);
    start_int_ack(SE_USB_INT);
    start_int_umask(SE_USB_INT);

    start_int_set_rising_edge(SE_USB_NEED_CLK_INT);
    start_int_ack(SE_USB_NEED_CLK_INT);
    start_int_umask(SE_USB_NEED_CLK_INT);

    start_int_set_rising_edge(SE_USB_AHB_NEED_CLK_INT);
    start_int_ack(SE_USB_AHB_NEED_CLK_INT);
    start_int_umask(SE_USB_AHB_NEED_CLK_INT);
}