Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 61400
b: refs/heads/master
c: 9cf6cf5
h: refs/heads/master
v: v3
  • Loading branch information
Hans-Christian Egtvedt authored and Haavard Skinnemoen committed Jul 18, 2007
1 parent 5e16a49 commit ee3515d
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e122eaf69422e5d9ce93fc9786099098e3b9e1c4
refs/heads/master: 9cf6cf58d06527fc5bc8e2965ddccdeca59ccee3
86 changes: 86 additions & 0 deletions trunk/arch/avr32/mach-at32ap/at32ap7000.c
Original file line number Diff line number Diff line change
Expand Up @@ -1084,6 +1084,89 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
return NULL;
}

/* --------------------------------------------------------------------
* SSC
* -------------------------------------------------------------------- */
static struct resource ssc0_resource[] = {
PBMEM(0xffe01c00),
IRQ(10),
};
DEFINE_DEV(ssc, 0);
DEV_CLK(pclk, ssc0, pba, 7);

static struct resource ssc1_resource[] = {
PBMEM(0xffe02000),
IRQ(11),
};
DEFINE_DEV(ssc, 1);
DEV_CLK(pclk, ssc1, pba, 8);

static struct resource ssc2_resource[] = {
PBMEM(0xffe02400),
IRQ(12),
};
DEFINE_DEV(ssc, 2);
DEV_CLK(pclk, ssc2, pba, 9);

struct platform_device *__init
at32_add_device_ssc(unsigned int id, unsigned int flags)
{
struct platform_device *pdev;

switch (id) {
case 0:
pdev = &ssc0_device;
if (flags & ATMEL_SSC_RF)
select_peripheral(PA(21), PERIPH_A, 0); /* RF */
if (flags & ATMEL_SSC_RK)
select_peripheral(PA(22), PERIPH_A, 0); /* RK */
if (flags & ATMEL_SSC_TK)
select_peripheral(PA(23), PERIPH_A, 0); /* TK */
if (flags & ATMEL_SSC_TF)
select_peripheral(PA(24), PERIPH_A, 0); /* TF */
if (flags & ATMEL_SSC_TD)
select_peripheral(PA(25), PERIPH_A, 0); /* TD */
if (flags & ATMEL_SSC_RD)
select_peripheral(PA(26), PERIPH_A, 0); /* RD */
break;
case 1:
pdev = &ssc1_device;
if (flags & ATMEL_SSC_RF)
select_peripheral(PA(0), PERIPH_B, 0); /* RF */
if (flags & ATMEL_SSC_RK)
select_peripheral(PA(1), PERIPH_B, 0); /* RK */
if (flags & ATMEL_SSC_TK)
select_peripheral(PA(2), PERIPH_B, 0); /* TK */
if (flags & ATMEL_SSC_TF)
select_peripheral(PA(3), PERIPH_B, 0); /* TF */
if (flags & ATMEL_SSC_TD)
select_peripheral(PA(4), PERIPH_B, 0); /* TD */
if (flags & ATMEL_SSC_RD)
select_peripheral(PA(5), PERIPH_B, 0); /* RD */
break;
case 2:
pdev = &ssc2_device;
if (flags & ATMEL_SSC_TD)
select_peripheral(PB(13), PERIPH_A, 0); /* TD */
if (flags & ATMEL_SSC_RD)
select_peripheral(PB(14), PERIPH_A, 0); /* RD */
if (flags & ATMEL_SSC_TK)
select_peripheral(PB(15), PERIPH_A, 0); /* TK */
if (flags & ATMEL_SSC_TF)
select_peripheral(PB(16), PERIPH_A, 0); /* TF */
if (flags & ATMEL_SSC_RF)
select_peripheral(PB(17), PERIPH_A, 0); /* RF */
if (flags & ATMEL_SSC_RK)
select_peripheral(PB(18), PERIPH_A, 0); /* RK */
break;
default:
return NULL;
}

platform_device_register(pdev);
return pdev;
}

/* --------------------------------------------------------------------
* GCLK
* -------------------------------------------------------------------- */
Expand Down Expand Up @@ -1166,6 +1249,9 @@ struct clk *at32_clock_list[] = {
&atmel_spi1_spi_clk,
&atmel_lcdfb0_hck1,
&atmel_lcdfb0_pixclk,
&ssc0_pclk,
&ssc1_pclk,
&ssc2_pclk,
&gclk0,
&gclk1,
&gclk2,
Expand Down
14 changes: 14 additions & 0 deletions trunk/include/asm-avr32/arch-at32ap/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,18 @@ struct platform_device *
at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
unsigned long fbmem_start, unsigned long fbmem_len);

/* depending on what's hooked up, not all SSC pins will be used */
#define ATMEL_SSC_TK 0x01
#define ATMEL_SSC_TF 0x02
#define ATMEL_SSC_TD 0x04
#define ATMEL_SSC_TX (ATMEL_SSC_TK | ATMEL_SSC_TF | ATMEL_SSC_TD)

#define ATMEL_SSC_RK 0x10
#define ATMEL_SSC_RF 0x20
#define ATMEL_SSC_RD 0x40
#define ATMEL_SSC_RX (ATMEL_SSC_RK | ATMEL_SSC_RF | ATMEL_SSC_RD)

struct platform_device *
at32_add_device_ssc(unsigned int id, unsigned int flags);

#endif /* __ASM_ARCH_BOARD_H */

0 comments on commit ee3515d

Please sign in to comment.