Other Parts Discussed in Thread: TMS320C6746,
Tool/software: Linux
Hi guys,
I'm currently working on a custom board with an ARM processor (AM3354) and a DSP (TMS320C6746) on it. The GPMC of AM3354 is connected to the UHPI interface of DSP (Chip select is 2). Also AM3354's GPIO3[20] pin is connected to the DSP's RESETn pin. My current goal is to reset the DSP automatically every time the board is powered on. This reset is a must in order to get ready for UHPI-boot.
Linux 3.8.13 is installed on ARM. I wrote the driver functions for UHPI, and things all worked just fine. (Device read, write and ioctl functions all worked well) until this morning as I modified the .dts file to set PINMUX for GPIO3[20]. Basically, I added the following code under the "am33xx_pinmux: pinmux@44e10800" node:
pinctrl-0 = <... &dsp_ctrl_pins>;
......
dsp_ctrl_pins: dsp_ctrl_pins {
pinctrl-single,pins = <0x1A8 0x17>; /* Offset is 0x1A8, mode 7, output, internal pull-up */
};
Nothing else is done. The dtb file was generated and then I rebooted the board, but the UHPI device was gone (not listed under /dev folder). I traced back to my driver functions and Linux source code and found that gpmc_cs_request() failed. Seemed like the CS has been claimed by something else, and I found gpmc_probe() was not called to clear the gpmc_cs_map. This is really awkward because I did nothing else like modifiying driver source code or configuration files or Makefile, absolutely nothing except the device tree file.
I appreciate help from anybody who encountered similar problems or giving me suggestions/clues on how to configure the GPMC back to its proper manner.
NOTE: last Saturday I tried to reset the DSP by hand (i.e. using echo command under /sys/class/gpio and things worked fine), but I'd definitely like to reset the DSP automatically each time the board is powered on.
Thanks,
Charlie