Blame view

kernel/linux-rt-4.4.41/include/linux/platform_data/spi-s3c64xx.h 2.17 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  /*
   * Copyright (C) 2009 Samsung Electronics Ltd.
   *	Jaswinder Singh <jassi.brar@samsung.com>
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   */
  
  #ifndef __SPI_S3C64XX_H
  #define __SPI_S3C64XX_H
  
  #include <linux/dmaengine.h>
  
  struct platform_device;
  
  /**
   * struct s3c64xx_spi_csinfo - ChipSelect description
   * @fb_delay: Slave specific feedback delay.
   *            Refer to FB_CLK_SEL register definition in SPI chapter.
   * @line: Custom 'identity' of the CS line.
   *
   * This is per SPI-Slave Chipselect information.
   * Allocate and initialize one in machine init code and make the
   * spi_board_info.controller_data point to it.
   */
  struct s3c64xx_spi_csinfo {
  	u8 fb_delay;
  	unsigned line;
  };
  
  /**
   * struct s3c64xx_spi_info - SPI Controller defining structure
   * @src_clk_nr: Clock source index for the CLK_CFG[SPI_CLKSEL] field.
   * @num_cs: Number of CS this controller emulates.
   * @cfg_gpio: Configure pins for this SPI controller.
   */
  struct s3c64xx_spi_info {
  	int src_clk_nr;
  	int num_cs;
  	int (*cfg_gpio)(void);
  	dma_filter_fn filter;
  };
  
  /**
   * s3c64xx_spi_set_platdata - SPI Controller configure callback by the board
   *				initialization code.
   * @cfg_gpio: Pointer to gpio setup function.
   * @src_clk_nr: Clock the SPI controller is to use to generate SPI clocks.
   * @num_cs: Number of elements in the 'cs' array.
   *
   * Call this from machine init code for each SPI Controller that
   * has some chips attached to it.
   */
  extern void s3c64xx_spi0_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
  						int num_cs);
  extern void s3c64xx_spi1_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
  						int num_cs);
  extern void s3c64xx_spi2_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
  						int num_cs);
  
  /* defined by architecture to configure gpio */
  extern int s3c64xx_spi0_cfg_gpio(void);
  extern int s3c64xx_spi1_cfg_gpio(void);
  extern int s3c64xx_spi2_cfg_gpio(void);
  
  extern struct s3c64xx_spi_info s3c64xx_spi0_pdata;
  extern struct s3c64xx_spi_info s3c64xx_spi1_pdata;
  extern struct s3c64xx_spi_info s3c64xx_spi2_pdata;
  #endif /*__SPI_S3C64XX_H */