Ejemplo n.º 1
0
void  at91_gpio_conf_output(__u32 nPioIdx, __u32 mask, int isPullUp)
{
	writel(VA(PIO_BASE(nPioIdx) + PIO_PER), mask);
	writel(VA(PIO_BASE(nPioIdx) + PIO_OER), mask);
	writel(VA(PIO_BASE(nPioIdx) + PIO_IDR), mask);
	writel(VA(PIO_BASE(nPioIdx) + (isPullUp ? PIO_PUER : PIO_PUDR)), mask);
}
Ejemplo n.º 2
0
void at91_gpio_conf_periB(__u32 nPioIdx, __u32 mask, int isPullUp)
{
	writel(VA(PIO_BASE(nPioIdx)) + PIO_PDR, mask);
	writel(VA(PIO_BASE(nPioIdx)) + PIO_BSR, mask);
	writel(VA(PIO_BASE(nPioIdx)) + PIO_IDR, mask);
	writel(VA(PIO_BASE(nPioIdx)) + (isPullUp ? PIO_PUER : PIO_PUDR), mask);
}
Ejemplo n.º 3
0
static void at91sam926x_gpio_irqparse(struct int_pin *ipin, __u32 irq)
{
	__u32 dwPioStat;
	__u32 nPioIdx, nPioPin;

	nPioIdx = irq - PIO_IRQ_OFFSET;
	dwPioStat = readl(VA(PIO_BASE(nPioIdx) + PIO_ISR));
	dwPioStat &= readl(VA(PIO_BASE(nPioIdx) + PIO_IMR));
	//	printf("%s(): stat = 0x%08x\n", __func__, dwPioStat);

	for (nPioPin = 0; nPioPin < 32; nPioPin++) {
		if (dwPioStat & (1 << nPioPin))
			irq_handle(32 + 32 * nPioIdx + nPioPin);
	}
}
Ejemplo n.º 4
0
static void at91sam926x_gpio_umask(__u32 irq)
{
	__u32 nPioIdx, nPioPin;

	irq -= 32;
	nPioIdx = irq >> 5;
	nPioPin = irq & 0x1f;

	writel(VA(PIO_BASE(nPioIdx) + PIO_IER), 1 << nPioPin);
}