The Best Streaming Software!
VIVO Rent A Car - Your car rental
Върни се   Digital TV Forums - БЪЛГАРСКИЯТ ФОРУМ ЗА ЦИФРОВА ТЕЛЕВИЗИЯ > ДИСКУСИИ - Всичко за сателитната и наземната телевизия > ПРИЕМНИЦИ за цифрова сателитна телевизия > Nokiа DBox2

Отговори
 
Контрол над темата Търси в тази тема Начин на разглеждане
  #1  
Стар 25-05-2009
Аватара на netman
netman netman не е на линия
Жичкаджия
 

Дата на присъединяване: Dec 2007
Местоположение: Бургаско
Мнения: 1,815
Благодари: 400
Получил благодарност:
301 пъти в 146 поста
Сваляния: 114
Ъплоуди: 1
По подразбиране Dbox2 и SD/MMC карта

Цитирай:
Първоначално написано от jonia


Тук има описание на сръбски, а тук на английски, обаче с бегло разглеждане май има разлика в номерата на пиновете на модемният слот. Така че въпреки простотата, освен имидж с поддръжка на SD/MMC , ще трябва уточняване на схемата при чичко Гугъл...
Код:
guenther	06/07/28 14:09:55

  Added:	   mmc	  mmc2test.c mmc3test.c
  Log:
  add mmc test files in head
  
  Revision  Changes	Path
  1.1				  driver/mmc/mmc2test.c
  
  file : http://cvs.tuxbox.org/tuxbox/driver/mmc/mmc2test.c?rev=1.1&content-type=text/vnd.viewcvs-markup
  plain: http://cvs.tuxbox.org/tuxbox/driver/mmc/mmc2test.c?rev=1.1&content-type=text/plain
  
  Index: mmc2test.c
  ===================================================================
  //  $Id: mmc2test.c,v 1.1 2006/07/28 12:09:55 guenther Exp $
  //
  //  MMC2_test.c - Development Version ONLY !!!!!
  //  General MMC device driver
  //  Modem connector pins PA9,PA8,PB16,PB17 used -> MM2 connection sheme
  //
  //  This version of MMC is used to test various optimisation variants only
  //
  // 24 Jul 2006
  //										   ---- Modem_CN ---
  //										   SAGEM NOKIA  PHIL
  // PA9  = SD_DO = 0x0040 = SD_Card Pin 7   =   2	12	 11
  // PA8  = SD_DI = 0x0080 = SD_Card Pin 2   =   1	11	  9
  // PB17 = SD_CLK= 0x4000 = SD_Card Pin 5   =  10	 2	  7
  // PB16 = SD_CS = 0x8000 = SD_Card Pin 1   =   6	 6	  5
  // GND  =	   = Masse  = SD_Card Pin 3,6 =   3	10	  2
  // VCC  =	   = 3,3V   = SD_Card Pin 4   =   5	16	  x (philips: connect in series 3 Diodes (1N4007) from MODEM_CN 1 to SD/MMC card pin 4)
  //
  // Speed of write Optimisation (MCC_WO) is not tested yet
  // Speed of read  Optimisation (MCC_RO):
  // MCC_RO  1: 10 MB read (51 seconds, 200 kb/s)
  // MCC_RO  2: 10 MB read (38 seconds, 260 kb/s)
  // MCC_RO  3: 10 MB read (34 seconds, 290 kb/s)
  // MCC_RO  4: 10 MB read (35 seconds, 290 kb/s)
  // MCC_RO  6: 10 MB read (31 seconds, 320 kb/s)
  
  // MCC_RO  8: 10 MB read (32 seconds, 310 kb/s)
  // MCC_RO 10: 10 MB read (31 seconds, 320 kb/s)
  // MCC_RO 11: 10 MB read (32 seconds, 310 kb/s)
  
  // Original MMC2 driver: 10 MB read (65 seconds, 150 kb/s).
  //
  
  
  #define MCC_RO 10
  #define MCC_WO 3
  
  #include <linux/delay.h>
  #include <linux/timer.h>
  
  #include <linux/module.h>
  #include <linux/mm.h>
  #include <linux/init.h>
  #include <linux/fs.h>
  #include <linux/blkpg.h>
  #include <linux/hdreg.h>
  #include <linux/major.h>
  #include <asm/uaccess.h>
  #include <asm/io.h>
  #include <asm/8xx_immap.h>
  
  #define DEVICE_NAME "mmc"
  #define DEVICE_NR(device) (MINOR(device))
  #define DEVICE_ON(device)
  #define DEVICE_OFF(device)
  #define MAJOR_NR 121
  
  #include <linux/blk.h>
  
  MODULE_AUTHOR("Madsuk/Rohde/TaGana");
  MODULE_DESCRIPTION("Driver MMC/SD-Cards");
  MODULE_SUPPORTED_DEVICE("all dbox2 on com2 connector");
  MODULE_LICENSE("GPL");
  
  unsigned int mmc_error_counter[20]={0,};
  unsigned int mmc_diag_counter[20]={0,};
  unsigned int mmc_time_counter[20]={0xffffffff,0,0xffffffff,0,0xffffffff,0,0xffffffff,0,0xffffffff,0,0xfffffff
f,0};
  
  typedef unsigned int uint32;
  
  /* we have only one device */
  static int hd_sizes[1<<6];
  static int hd_blocksizes[1<<6];
  static int hd_hardsectsizes[1<<6];
  static int hd_maxsect[1<<6];
  static struct hd_struct hd[1<<6];
  
  static struct timer_list mmc_timer;
  static int mmc_media_detect = 0;
  static int mmc_media_changed = 1;
  
  static int mmc_open(struct inode *inode, struct file *filp);
  static int mmc_release(struct inode *inode, struct file *filp);
  static int mmc_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg);
  
  static struct block_device_operations mmc_bdops =
  {
	  open: mmc_open,
	  release: mmc_release,
	  ioctl: mmc_ioctl,
  #if 0
	  check_media_change: mmc_check_media_change,
	  revalidate: mmc_revalidate,
  #endif
  };
  
  static struct gendisk hd_gendisk = {
	  major:		MAJOR_NR,
	  major_name:	DEVICE_NAME,
	  minor_shift:	6,
	  max_p:		1 << 6,
	  part:		hd,
	  sizes:		hd_sizes,
	  fops:		&mmc_bdops,
  };
  
  
  /////////////////////////////////////////////////////////////////////////////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////// Low-Level Driver
  /////////////////////////////////////////////////////////////////////////////////////////////////////////
  /////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  volatile immap_t *immap=(immap_t *)IMAP_ADDR;
  
  #define SD_DO_NUM 6			 // on SD/MMC card pin 7
  #define SD_DO (1<<SD_DO_NUM)	//#define SD_DO  0x0040 // on SD/MMC card pin 7
  #define SD_DI  0x0080		   // on SD/MMC card pin 2
  #define SD_CLK 0x4000		   // on SD/MMC card pin 5
  #define SD_CS  0x8000		   // on SD/MMC card pin 1
  
  static void mmc_spi_cs_low(void)
  {
	volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	cp->cp_pbdat &= ~(SD_CS);
  }
  
  static void mmc_spi_cs_high(void)
  {
	volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	cp->cp_pbdat |= SD_CS;
  }
  
  static int mmc_hardware_init(void) {
	  volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	  volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
  
	  mmc_diag_counter[9]++;
	  printk("mmc2: Hardware init\n");
	  cp->cp_pbpar &=   ~(SD_CLK | SD_CS);
	  cp->cp_pbodr &=   ~(SD_CLK | SD_CS);
	  cp->cp_pbdir |=	(SD_CLK | SD_CS);
	  cpi->iop_papar &= ~(SD_DO | SD_DI);
	  cpi->iop_paodr &= ~(SD_DO);
	  cpi->iop_padir |=   SD_DI;
	  cpi->iop_padir &=  ~SD_DO;
  
	  // Clock + CS low
	  cp->cp_pbdat &= ~(SD_CLK | SD_CS);
	  cpi->iop_padat &= ~SD_DI;
	  return 0;
  }
  
  static unsigned char mmc_spi_io(unsigned char data_out) {
	volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
	unsigned char result = 0;
	unsigned char  i;
  
	for(i = 0x80; i != 0; i >>= 1) {
	  if (data_out & i)
		cpi->iop_padat |= SD_DI;
	  else
		cpi->iop_padat &= ~SD_DI;
  
	  cp->cp_pbdat |= SD_CLK;
	  if (cpi->iop_padat & SD_DO) {
		  result |= i;
	  }
	  cp->cp_pbdat &= ~SD_CLK;
	}
  
	return result;
  }
  
  /////////////////////////////
  /// write variants
  #if (MCC_WO == 1)
  static inline void mmc_spi_write(unsigned char data_out) {
	volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
	unsigned char  i;
  
	for(i = 0x80; i != 0; i >>= 1) {
	  if (data_out & i)
		cpi->iop_padat |= SD_DI;
	  else
		cpi->iop_padat &= ~SD_DI;
  
	  cp->cp_pbdat |= SD_CLK;
  
	  cp->cp_pbdat &= ~SD_CLK;
	}
  }
  #endif
  #if (MCC_WO == 2)
  void inline mmc_spi_write(unsigned char data_out) {
	volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
	  <<Truncated>>
.
Отговори с цитат
  #2  
Стар 25-05-2009
Аватара на netman
netman netman не е на линия
Жичкаджия
 

Дата на присъединяване: Dec 2007
Местоположение: Бургаско
Мнения: 1,815
Благодари: 400
Получил благодарност:
301 пъти в 146 поста
Сваляния: 114
Ъплоуди: 1
По подразбиране

Код:
1.1				  driver/mmc/mmc3test.c
  
  file : http://cvs.tuxbox.org/tuxbox/driver/mmc/mmc3test.c?rev=1.1&content-type=text/vnd.viewcvs-markup
  plain: http://cvs.tuxbox.org/tuxbox/driver/mmc/mmc3test.c?rev=1.1&content-type=text/plain
  
  Index: mmc3test.c
  ===================================================================
  //  $Id: mmc3test.c,v 1.1 2006/07/28 12:09:55 guenther Exp $
  //
  // !!!! This version is not tested and WILL have a lot of errors !!!!!!!
  //
  //
  //  MMC3test.c - Development Version ONLY !!!!!
  //  MMC device driver for Nokia (and updated Sagems)
  //  Modem connector pins PA9,PA8,PA7,PB17 used 
  // 
  //  This version of MMC is used to test optimisation possibilities with the 
  //  processor's CPM-SMC2 channel only
  
  //  24 Jul 2006 
  //  sd/mmc card connection scheme
  //
  //					 ----------------
  //					/ 1 2 3 4 5 6 7 x| MMC/SC Card
  //					|x			   |
  //
  //	_----------------------------------------
  //   | |		dbox2 tuner Nokia			  |
  //	~----------------------------------------
  //	 |		1  3  5  7  9 11 13 15 17 19
  //	 |		2  4  6  8 10 12 14 16 18 20
  //
  //												   ---- Modem_CN ---
  //													NOKIA SAGEM PHIL
  // PA9  = SMRXD2 = SD_DO = 0x0040 = SD_CARD Pin 7   =  12	 2	11
  // PA8  = SMTXD2 = SD_DI = 0x0080 = SD_CARD Pin 2   =  11	 1	 9   (Sagem: PIN1 close to power supply)
  // PA7  = BRGO1  = SD_CLK= 0x0100 = SD_CARD Pin 5   =  14	 x	 ?   (Sagem: solder line from board :0, see posting xxx)
  // PB22 = SMSYN2 = SD_CS = 0x0200 = SD_CARD Pin 1   =  18	 x	 ?   (Sagem: solder line from board :0, see posting xxx)
  // GND  =		=	   = Masse  = SD_Card Pin 3,6 =  10	 3	 2
  // VCC  =		=	   = 3,3V   = SD_Card Pin 4   =  16	 5	 x   (Philips: connect in series 3 Diodes (1N4007) from MODEM_CN 1 to SD/MMC card pin 4)
  //
  // Also connect a pullup resistor 100 KOhm from SD/MMC card pin 7 (SD_DO) to SD/MMC card pin 4 (VCC)
  //
  #include <linux/delay.h>
  #include <linux/timer.h>
  
  #include <linux/module.h>
  #include <linux/mm.h>
  #include <linux/init.h>
  #include <linux/fs.h>
  #include <linux/blkpg.h>
  #include <linux/hdreg.h>
  #include <linux/major.h>
  #include <asm/uaccess.h>
  #include <asm/io.h>
  #include <asm/8xx_immap.h>
  
  #define DEVICE_NAME "mmc"
  #define DEVICE_NR(device) (MINOR(device))
  #define DEVICE_ON(device)
  #define DEVICE_OFF(device)
  #define MAJOR_NR 121
  
  #include <linux/blk.h>
  
  MODULE_AUTHOR("Madsuk/Rohde/TaGana");
  MODULE_DESCRIPTION("Driver MMC/SD-Cards");
  MODULE_SUPPORTED_DEVICE("all dbox2 on com2 connector");
  MODULE_LICENSE("GPL");
  
  typedef unsigned int uint32;
  
  volatile immap_t *immap=(immap_t *)IMAP_ADDR;
  
  /* we have only one device */
  static int hd_sizes[1<<6];
  static int hd_blocksizes[1<<6];
  static int hd_hardsectsizes[1<<6];
  static int hd_maxsect[1<<6];
  static struct hd_struct hd[1<<6];
  
  static struct timer_list mmc_timer;
  static int mmc_media_detect = 0;
  static int mmc_media_changed = 1;
  
  #define NUMBER_OF_BURST_BYTES 512
  #define SLOW_SPI_IO_CLK 1000
  //////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////
  // low-level driver 
  unsigned char test_buffer_rx[NUMBER_OF_BURST_BYTES+10];
  unsigned char test_buffer_tx[NUMBER_OF_BURST_BYTES+10];
  // general port definition
  #define PAPAR (((iop8xx_t *) &immap->im_ioport)->iop_papar)
  #define PADIR (((iop8xx_t *) &immap->im_ioport)->iop_padir)
  #define PAODR (((iop8xx_t *) &immap->im_ioport)->iop_paodr)
  #define PADAT (((iop8xx_t *) &immap->im_ioport)->iop_padat)
  
  #define PBPAR (((cpm8xx_t *) &immap->im_cpm)->cp_pbpar)
  #define PBDIR (((cpm8xx_t *) &immap->im_cpm)->cp_pbdir)
  #define PBODR (((cpm8xx_t *) &immap->im_cpm)->cp_pbodr)
  #define PBDAT (((cpm8xx_t *) &immap->im_cpm)->cp_pbdat)
  
  // Pin connection definition
  #define SD_DO  0x0040 // GPIO A, on SD/MMC card pin 7
  #define SD_DI  0x0080 // GPIO A, on SD/MMC card pin 2
  #define SD_CLK 0x0100 // GPIO A, on SD/MMC card pin 5
  #define SD_CS  0x0200 // GPIO B, on SD/MMC card pin 1
  
  #define SMC_CLK_SET_HIGH (PADAT |=  SD_CLK )
  #define SMC_CLK_SET_LOW  (PADAT &= ~SD_CLK )
  
  #define SMC_DI_SET_HIGH  (PADAT |=  SD_DI  )
  #define SMC_DI_SET_LOW   (PADAT &= ~SD_DI  )
  
  #define SMC_CS_SET_HIGH  (PBDAT |=  SD_CS  )
  #define SMC_CS_SET_LOW   (PBDAT &=  ~SD_CS  )
  
  #define SMC_DO_IS_SET  ((PADAT & SD_DO)?0x01:0x00) 
  
  
  // BIT-BANG driver 
  
  // functions
  static void mmc_spi_cs_low(void) {
	volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	cp->cp_pbdat &= ~(SD_CS);
  }
  
  static void mmc_spi_cs_high(void) {
	volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	cp->cp_pbdat |= SD_CS;
  }
  
  static int mmc_hardware_init(void) {
	  volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
	  volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
  
	  printk("mmc3: Hardware init\n");
	  //		  PA8	 SMTXD2		  (MMC2_DI)
	  cpi->iop_papar &= ~(SD_DI);
	  cpi->iop_padir |=   SD_DI;
	  //		  PA9	 SMRXD2		  (MMC2_DO)
	  cpi->iop_papar &= ~(SD_DO);
	  cpi->iop_paodr &= ~(SD_DO);
	  cpi->iop_padir &=  ~SD_DO;
	  //		  PB22	SMSYN2		  (MMC_CLK)
	  cp->cp_pbpar &=   ~(SD_CS);
	  cp->cp_pbodr &=   ~(SD_CS);
	  cp->cp_pbdir |=	(SD_CS);
	  //		  PA7	 CLK1,  BRGO1	(MMC_ DO)
	  cpi->iop_papar &=   ~(SD_CLK);
	  cpi->iop_papar &=   ~(SD_CLK);
	  cpi->iop_papar |=	(SD_CLK);
  
	  // Clock + CS low
	  cpi->iop_padat &= ~(SD_CLK);
	  cp->cp_pbdat   &= ~(SD_CS);   // CS low???
	  //cp->cp_pbdat   |= (SD_CS);   // CS low???
	  cpi->iop_padat &= ~SD_DI;
	  return 0;
  }
  
  static unsigned char mmc_spi_io(unsigned char data_out) {
	volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
	unsigned char result = 0;
	unsigned char  i;
	volatile int zzz=0;
	volatile int yyy=0;
  
	for(i = 0x80; i != 0; i >>= 1) 
	{
	  if (data_out & i)
		cpi->iop_padat |= SD_DI;
	  else
		cpi->iop_padat &= ~SD_DI;
  
	  for(zzz=0;zzz<SLOW_SPI_IO_CLK;zzz++)yyy=zzz; // slow down processor before next clock
	  cpi->iop_padat |= SD_CLK;
	  if (cpi->iop_padat & SD_DO) 
	  {
		  result |= i;
	  }
	  for(zzz=0;zzz<SLOW_SPI_IO_CLK;zzz++)yyy=zzz; // slow down processor before next clock
	  cpi->iop_padat &= ~SD_CLK;
	}
	return result;
  }
  
  
  // SMC driver 
  //#define SMC_ENABLED
  
  //(((cpm8xx_t *) &immap->im_ioport)->iop_papar)
  // DPRAM SMC
  
  #define DPRAM_BASE (&immap->im_cpm.cp_dpmem)
  #define RX_BD_STATUS  *((unsigned short*)(DPRAM_BASE +0x00))
  #define RX_BD_LENGTH  *((unsigned short*)(DPRAM_BASE +0x02))
  #define RX_BD_POINTER *((unsigned int*)  (DPRAM_BASE +0x04))
  #define TX_BD_STATUS  *((unsigned short*)(DPRAM_BASE +0x10))
  #define TX_BD_LENGTH  *((unsigned short*)(DPRAM_BASE +0x12))
  #define TX_BD_POINTER *((unsigned int*)  (DPRAM_BASE +0x14))
  // SMC Parameter RAM Memory MAP
  #define SMC2_BASE ((&immap->im_cpm.cp_dparam)+0x0380) 
  #define RBASE *((unsigned short*)(SMC2_BASE + 0x00))
	  <<Truncated>>
  
  

--
.
Отговори с цитат
Sponsored Links
VIVO Rent A Car  Вземи своят Vu+ сега!  SatPlus
Отговори

Съобщения от Devil M
VIVO Rent A Car  

Тагове
dbox2, sd or mmc, карта


Активни потребители разглеждащи тази тема в момента: 1 (0 членове и 1 гости)
 

Подобни теми
Тема Започнал темата Форум Отговори Последно мнение
PB-Enigma VX DBox2 x1 und x2 Bobo-ID Nokiа DBox2 11 01-03-2011 01:24
Имидж за dBox2 koscom Nokiа DBox2 1 09-10-2010 09:17
DBox2 Toolbox thunderstorm6 Nokiа DBox2 5 06-09-2010 15:44
WoD-Toolbox-DBox2 thunderstorm6 Nokiа DBox2 0 02-12-2009 06:23
HDMI ЗА DBOX2 netman Nokiа DBox2 0 25-05-2009 10:19


Всички времена са във формат GMT +3. Часът е 10:33.


DTV-BG Powered by vBulletin Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.