1. 26 Feb, 2009 5 commits
  2. 25 Feb, 2009 9 commits
    • Frederic Weisbecker's avatar
      tracing/core: make the read callbacks reentrants · d7350c3f
      Frederic Weisbecker authored
      Now that several per-cpu files can be read or spliced at the
      same, we want the read/splice callbacks for tracing files to be
      reentrants.
      
      Until now, a single global mutex (trace_types_lock) serialized
      the access to tracing_read_pipe(), tracing_splice_read_pipe(),
      and the seq helpers.
      
      Ie: it means that if a user tries to read trace_pipe0 and
      trace_pipe1 at the same time, the access to the function
      tracing_read_pipe() is contended and one reader must wait for
      the other to finish its read call.
      
      The trace_type_lock mutex is mostly here to serialize the access
      to the global current tracer (current_trace), which can be
      changed concurrently. Although the iter struct keeps a private
      pointer to this tracer, its callbacks can be changed by another
      function.
      
      The method used here is to not keep anymore private reference to
      the tracer inside the iterator but to make a copy of it inside
      the iterator. Then it checks on subsequents read calls if the
      tracer has changed. This is not costly because the current
      tracer is not expected to be changed often, so we use a branch
      prediction for that.
      
      Moreover, we add a private mutex to the iterator (there is one
      iterator per file descriptor) to serialize the accesses in case
      of multiple consumers per file descriptor (which would be a
      silly idea from the user). Note that this is not to protect the
      ring buffer, since the ring buffer already serializes the
      readers accesses. This is to prevent from traces weirdness in
      case of concurrent consumers. But these mutexes can be dropped
      anyway, that would not result in any crash. Just tell me what
      you think about it.
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d7350c3f
    • Frederic Weisbecker's avatar
      tracing/core: introduce per cpu tracing files · b04cc6b1
      Frederic Weisbecker authored
      Impact: split up tracing output per cpu
      
      Currently, on the tracing debugfs directory, three files are
      available to the user to let him extracting the trace output:
      
      - trace is an iterator through the ring-buffer. It's a reader
        but not a consumer It doesn't block when no more traces are
        available.
      
      - trace pretty similar to the former, except that it adds more
        informations such as prempt count, irq flag, ...
      
      - trace_pipe is a reader and a consumer, it will also block
        waiting for traces if necessary (heh, yes it's a pipe).
      
      The traces coming from different cpus are curretly mixed up
      inside these files. Sometimes it messes up the informations,
      sometimes it's useful, depending on what does the tracer
      capture.
      
      The tracing_cpumask file is useful to filter the output and
      select only the traces captured a custom defined set of cpus.
      But still it is not enough powerful to extract at the same time
      one trace buffer per cpu.
      
      So this patch creates a new directory: /debug/tracing/per_cpu/.
      
      Inside this directory, you will now find one trace_pipe file and
      one trace file per cpu.
      
      Which means if you have two cpus, you will have:
      
       trace0
       trace1
       trace_pipe0
       trace_pipe1
      
      And of course, reading these files will have the same effect
      than with the usual tracing files, except that you will only see
      the traces from the given cpu.
      
      The original all-in-one cpu trace file are still available on
      their original place.
      
      Until now, only one consumer was allowed on trace_pipe to avoid
      racy consuming on the ring-buffer. Now the approach changed a
      bit, you can have only one consumer per cpu.
      
      Which means you are allowed to read concurrently trace_pipe0 and
      trace_pipe1 But you can't have two readers on trace_pipe0 or
      trace_pipe1.
      
      Following the same logic, if there is one reader on the common
      trace_pipe, you can not have at the same time another reader on
      trace_pipe0 or in trace_pipe1. Because in trace_pipe is already
      a consumer in all cpu buffers in essence.
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      b04cc6b1
    • Ingo Molnar's avatar
      Merge branch 'tip/tracing/ftrace' of... · 2b1b858f
      Ingo Molnar authored
      Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace
      2b1b858f
    • Ingo Molnar's avatar
      tracing: remove /debug/tracing/latency_trace · 886b5b73
      Ingo Molnar authored
      Impact: remove old debug/tracing API
      
      /debug/tracing/latency_trace is an old legacy format we kept from
      the old latency tracer. Remove the file for now. If there's any
      useful bit missing then we'll propagate any useful output bits into
      the /debug/tracing/trace output.
      Reported-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      886b5b73
    • Ingo Molnar's avatar
      tracing/hw-branch-tracing: convert bts-tracer mutex to a spinlock · 2d542cf3
      Ingo Molnar authored
      Impact: fix CPU hotplug lockup
      
      bts_hotcpu_handler() is called with irqs disabled, so using mutex_lock()
      is a no-no.
      
      All the BTS codepaths here are atomic (they do not schedule), so using
      a spinlock is the right solution.
      
      Cc: Markus Metzger <markus.t.metzger@intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      2d542cf3
    • Steven Rostedt's avatar
      tracing: make event directory structure · 1473e441
      Steven Rostedt authored
      This patch adds the directory /debug/tracing/events/ that will contain
      all the registered trace points.
      
       # ls /debug/tracing/events/
      sched_kthread_stop      sched_process_fork  sched_switch
      sched_kthread_stop_ret  sched_process_free  sched_wait_task
      sched_migrate_task      sched_process_wait  sched_wakeup
      sched_process_exit      sched_signal_send   sched_wakeup_new
      
       # ls /debug/tracing/events/sched_switch/
      enable
      
       # cat /debug/tracing/events/sched_switch/enable
      1
      
       # cat /debug/tracing/set_event
      sched_switch
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      1473e441
    • Steven Rostedt's avatar
      tracing: add schedule events to event trace · f3fe8e4a
      Steven Rostedt authored
      This patch changes the trace/sched.h to use the DECLARE_TRACE_FMT
      such that they are automatically registered with the event tracer.
      
      And it also adds the tracing sched headers to kernel/trace/events.c
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      f3fe8e4a
    • Steven Rostedt's avatar
      tracing: add event trace infrastructure · b77e38aa
      Steven Rostedt authored
      This patch creates the event tracing infrastructure of ftrace.
      It will create the files:
      
       /debug/tracing/available_events
       /debug/tracing/set_event
      
      The available_events will list the trace points that have been
      registered with the event tracer.
      
      set_events will allow the user to enable or disable an event hook.
      
      example:
      
       # echo sched_wakeup > /debug/tracing/set_event
      
      Will enable the sched_wakeup event (if it is registered).
      
       # echo "!sched_wakeup" >> /debug/tracing/set_event
      
      Will disable the sched_wakeup event (and only that event).
      
       # echo > /debug/tracing/set_event
      
      Will disable all events (notice the '>')
      
       # cat /debug/tracing/available_events > /debug/tracing/set_event
      
      Will enable all registered event hooks.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      b77e38aa
    • Steven Rostedt's avatar
      tracing: add DEFINE_TRACE_FMT to tracepoint.h · 7c37730c
      Steven Rostedt authored
      This patch creates a DEFINE_TRACE_FMT to map to DECLARE_TRACE.
      This allows for the developers to place format strings and
      args in with their tracepoint declaration. A tracer may now
      override the DEFINE_TRACE_FMT macro and use it to record
      a default format.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      7c37730c
  3. 24 Feb, 2009 26 commits
    • Linus Torvalds's avatar
      694593e3
    • Linus Torvalds's avatar
      Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 · 21209b61
      Linus Torvalds authored
      * 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6:
        Add i2c_board_info for RiscPC PCF8583
        i2c: Make sure i2c_algo_bit_data.timeout is HZ-independent
        i2c-dev: Clarify the unit of ioctl I2C_TIMEOUT
        i2c: Timeouts reach -1
        i2c: Fix misplaced parentheses
      21209b61
    • Linus Torvalds's avatar
      Merge branch 'firedtv-merge' of... · a792cd12
      Linus Torvalds authored
      Merge branch 'firedtv-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6
      
      * 'firedtv-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
        firedtv: dvb_frontend_info for FireDTV S2, fix "frequency limits undefined" error
        firedtv: massive refactoring
        firedtv: rename files, variables, functions from firesat to firedtv
        firedtv: Use DEFINE_SPINLOCK
        firedtv: fix registration - adapter number could only be zero
        firedtv: use length_field() of PMT as length
        firedtv: fix returned struct for ca_info
        firedtv: cleanups and minor fixes
        ieee1394: remove superfluous assertions
        ieee1394: inherit ud vendor_id from node vendor_id
        ieee1394: add hpsb_node_read() and hpsb_node_lock()
        ieee1394: use correct barrier types between accesses of nodeid and generation
        firesat: copyrights, rename to firedtv, API conversions, fix remote control input
        firesat: avc resend
        firesat: update isochronous interface, add CI support
        firesat: add DVB-S support for DVB-S2 devices
        firesat: fix DVB-S2 device recognition
        DVB: add firesat driver
      a792cd12
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 4daa0682
      Linus Torvalds authored
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
        ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin()
        ext4: Add fallback for find_group_flex
      4daa0682
    • Russell King's avatar
      Add i2c_board_info for RiscPC PCF8583 · 531660ef
      Russell King authored
      Add the necessary i2c_board_info structure to fix the lack of PCF8583
      RTC on RiscPC.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      531660ef
    • Jean Delvare's avatar
      i2c: Make sure i2c_algo_bit_data.timeout is HZ-independent · 082a4cf8
      Jean Delvare authored
      i2c_algo_bit_data.timeout is supposed to be in jiffies, so drivers
      should use set this value in terms of HZ.
      
      Ultimately I think this field should be discarded in favor of
      i2c_adapter.timeout, but that's left for a future patch.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Acked-by: default avatarLennert Buytenhek <kernel@wantstofly.org>
      Acked-by: default avatarLen Sorensen <lsorense@csclub.uwaterloo.ca>
      082a4cf8
    • Jean Delvare's avatar
      i2c-dev: Clarify the unit of ioctl I2C_TIMEOUT · cd97f39b
      Jean Delvare authored
      The unit in which user-space can set the bus timeout value is jiffies
      for historical reasons (back when HZ was always 100.) This is however
      not good because user-space doesn't know how long a jiffy lasts. The
      timeout value should instead be set in a fixed time unit. Given the
      original value of HZ, this unit should be 10 ms, for compatibility.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Acked-by: default avatarWolfram Sang <w.sang@pengutronix.de>
      cd97f39b
    • Roel Kluin's avatar
      i2c: Timeouts reach -1 · a746b578
      Roel Kluin authored
      With a postfix decrement these timeouts reach -1 rather than 0, but
      after the loop it is tested whether they have become 0.
      
      As pointed out by Jean Delvare, the condition we are waiting for should
      also be tested before the timeout. With the current order, you could
      exit with a timeout error while the job is actually done.
      Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      a746b578
    • Roel Kluin's avatar
      i2c: Fix misplaced parentheses · f29d2e02
      Roel Kluin authored
      Fix misplaced parentheses.
      Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      f29d2e02
    • Helge Bahmann's avatar
      proc: fix PG_locked reporting in /proc/kpageflags · e07a4b92
      Helge Bahmann authored
      Expr always evaluates to zero.
      
      Cc: Matt Mackall <mpm@selenic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      e07a4b92
    • Markus Metzger's avatar
      x86, ptrace: remove CONFIG guards around declarations · 499aa86d
      Markus Metzger authored
      Remove unnecessary CONFIG guards around type declarations and macro
      definitions.
      Reported-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
      Signed-off-by: default avatarMarkus Metzger <markus.t.metzger@intel.com>
      Cc: markus.t.metzger@gmail.com
      Cc: roland@redhat.com
      Cc: eranian@googlemail.com
      Cc: oleg@redhat.com
      Cc: juan.villacis@intel.com
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      499aa86d
    • Markus Metzger's avatar
      x86, ftrace: fix section mismatch in hw-branch-tracer · 5e01cb69
      Markus Metzger authored
      Fix an invalid memory reference problem when cpu hotplug support is
      disabled and the hw-branch-tracer is set as current tracer.
      
      Initializing the tracer calls bts_trace_init() which has already
      been freed at this time.
      Reported-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Signed-off-by: default avatarMarkus Metzger <markus.t.metzger@intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      5e01cb69
    • Ingo Molnar's avatar
    • Beat Michel Liechti's avatar
      firedtv: dvb_frontend_info for FireDTV S2, fix "frequency limits undefined" error · e73bf9f1
      Beat Michel Liechti authored
      I found that the function fdtv_frontend_init in the file firedtv-fe.c was
      missing a case for FIREDTV_DVB_S2 which resulted in "frequency limits
      undefined" errors in syslog.
      Signed-off-by: default avatarBeat Michel Liechti <bml303@gmail.com>
      
      Change by Stefan R: combine it with case case FIREDTV_DVB_S as
      originally suggested by Beat Michel.  This enables FE_CAN_FEC_AUTO also
      for FireDTV-S2 devices which is possible as long as only DVB-S channels
      are used.  FE_CAN_FEC_AUTO would be wrong for DVB-S2 channels, but those
      cannot be used yet since the driver is not yet converted to S2API.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      e73bf9f1
    • Stefan Richter's avatar
      firedtv: massive refactoring · 15490795
      Stefan Richter authored
      Combination of the following changes:
      
      Mon, 23 Feb 2009 14:21:10 +0100 (CET)
      firedtv: reinstate debug logging option
      
          Henrik Kurelid tells me that FCP debug logging (which I removed during
          cleanups) is still useful when working on driver issues together with
          end users.  So bring it back in an updated form with only 60% of the
          original code footprint.
      
          Logging can be enabled with
          # echo -1 > /sys/module/firedtv/parameters/debug
      
          1 instead of -1 enables only FCP header logging,
          2 instead of -1 enables only hexdumps of the entire FCP frames.
          0 switches logging off again.
      
      Fri, 20 Feb 2009 20:54:27 +0100 (CET)
      firedtv: build fix for INPUT=m and DVB_FIREDTV=y
      
      Thu, 19 Feb 2009 20:40:39 +0100
      firedtv: use msecs_to_jiffies
      
          Pointed out by Mauro Carvalho Chehab.
      
      Sun Feb 15 20:50:46 CET 2009
      firedtv: some more housekeeping
      
          Fix an old checkpatch warning and a new compiler warning.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: rename a file once more
      
          At the moment, about a third of avc.c is specific to FireDTVs rather
          than generic AV/C code.  Rename it to firedtv-avc.c.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: dvb demux: more compact channels backing store
      
          Replace struct firedtv_channel { bool active; int pid; } channel[16];
          by unsigned long channel_active; u16 channel_pid[16];.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: dvb demux: some simplifications
      
          c->active was unnecessarily cleared twice.
      
          Also, by marking the channel inactive before the for loop,
          the loop becomes identical with fdtv_channel_collect().
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: dvb demux: remove a bogus loop
      
          This loop is unnecessary because
            - only active channel[].pid's will be sent to the device,
            - when a channel is activated, its pid is set to dvbdmxfeed->pid.
      
          Perhaps the original code was there because it was initially not fully
          covered by the fdtv->demux_mutex.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: dvb demux: fix mutex protection
      
          fdtv_start_feed() accessed the channel list unsafely.
          Fully serialize it with itself and fdtv_stop_feed().
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: dvb demux: fix missing braces
      
          Original code was:
                  ...
                  case DMX_TS_PES_OTHER:
                          //Dirty fix to keep firesat->channel pid-list up to date
                          for(k=0;k<16;k++){
                                  if(firesat->channel[k].active == 0)
                                          firesat->channel[k].pid =
                                                  dvbdmxfeed->pid;
                                          break;
                          }
                          channel = firesat_channel_allocate(firesat);
                          break;
                  default:
                  ...
      
          Looks bogus in several respects. For now let's just add braces to the if
          because that seems to be what the author meant.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: allow build without input subsystem
      
          !CONFIG_INPUT is very unlikely on systems on which firedtv is of
          interest.  But we can easily support it.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: replace EXTRA_CFLAGS by ccflags
      
          The former are deprecated.
          The latter can depend on Kconfig variables.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: concentrate ieee1394 dependencies
      
          Move the entire interface with drivers/ieee1394 to firedtv-1394.c.
          Move 1394-independent module initialization code to firedtv-dvb.c.
      
          This prepares interfacing with drivers/firewire.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: amend Kconfig menu prompt
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: remove kernel version compatibility macro
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: combine header files
      
          avc.h and firedtv-*.h are small and currently not shared with other
          drivers, hence concatenate them all into firedtv.h.
      
      Sun Feb 15 15:33:17 CET 2009
      firedtv: misc style touch-ups
      
          Standardize on lower-case hexadecimal constants.  Adjust whitespace.
          Omit unnecessary pointer type casts and an unnecessary list head
          initialization.  Use dev_printk.
      
      Wed Feb 11 21:21:04 CET 2009
      firedtv: avc, ci: remove unused constants
      
      Wed Feb 11 21:21:04 CET 2009
      firedtv: avc: remove bitfields from read descriptor response operands
      
          Don't use bitfields in struct types of on-the-wire data.
      
      Wed Feb 11 21:21:04 CET 2009
      firedtv: avc: remove bitfields from DSD command operands
      
          Don't use bitfields in struct types of on-the-wire data.
      
      Wed Feb 11 21:21:04 CET 2009
      firedtv: avc: header file cleanup
      
          Remove unused constants and declarations.
          Move privately used constants into .c files.
      
      Wed Feb 11 21:21:04 CET 2009
      firedtv: avc: remove bitfields from FCP frame types
      
          Don't use bitfields in struct types of on-the-wire data.
      
          Also move many privately used constants from avc.h to avc.c
          and remove some unused constants.
      
      Sun, 18 Jan 2009 16:30:00 +0100 (CET)
      firedtv: avc: fix offset in avc_tuner_get_ts
      
          The parentheses were wrong.  It didn't matter though because this code
          only writes a 0 into an area which is already initialized to 0.
      
      Sun, 18 Jan 2009 16:30:00 +0100 (CET)
      firedtv: avc: reduce stack usage, remove two typedefs
      
          It is safe to share a memory buffer for command frame and response frame
          because the response data come in after the command frame was last used.
      
          Even less stack would be required if only the actual required frame size
          instead of the entire FCP register size was allocated.
      
          Also, rename the defined types AVCCmdFrm and AVCRspFrm to
          struct avc_command_frame and struct avc_response_frame.
          TODO:  Remove the bitfields in these types.
      
      Sun, 18 Jan 2009 16:30:00 +0100 (CET)
      firedtv: cmp: move code to avc
      
      Sun, 18 Jan 2009 16:30:00 +0100 (CET)
      firedtv: iso: move code to firedtv-1394
      
      Sun, 18 Jan 2009 16:30:00 +0100 (CET)
      firedtv: iso: remove unnecessary struct type definitions
      
      Sun, 18 Jan 2009 16:30:00 +0100 (CET)
      firedtv: iso: style changes and fixlets
      
          Add cleanup after failure in setup_iso_channel.
          Replace printk() by dv_err().
          Decrease indentation level in rawiso_activity_cb().
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      15490795
    • Rambaldi's avatar
      firedtv: rename files, variables, functions from firesat to firedtv · a70f81c1
      Rambaldi authored
      Combination of the following changes:
      
      Sat, 17 Jan 2009 14:47:34 +0100
      firedtv: rename variables and functions from firesat to firedtv
      Signed-off-by: default avatarRambaldi <Rambaldi@xs4all.nl>
      
          Additional changes by Stefan Richter:
      
          Renamed struct firedtv *firedtv to struct firedtv *fdtv and
          firedtv_foo_bar() to fdtv_foo_bar() for brevity.
      
      Sat, 17 Jan 2009 13:07:44 +0100
      firedtv: rename files from firesat to firedtv
      Signed-off-by: default avatarRambaldi <Rambaldi@xs4all.nl>
      
          Additional changes by Stefan Richter:
      
          Name the directory "firewire" instead of "firedtv".
          Standardize on "-" instead of "_" in file names, because that's what
          drivers/firewire/ and drivers/media/dvb/dvb-usb/ use too.
          Build fix.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      a70f81c1
    • Julia Lawall's avatar
      firedtv: Use DEFINE_SPINLOCK · 291f006e
      Julia Lawall authored
      SPIN_LOCK_UNLOCKED is deprecated.  The following makes the change suggested
      in Documentation/spinlocks.txt
      Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      291f006e
    • Henrik Kurelid's avatar
      firedtv: fix registration - adapter number could only be zero · a40bf559
      Henrik Kurelid authored
      There was a bug causing the initialization to fail if adapter number was
      greater than zero. The adapter was however registered which caused the driver
      to oops the second time initialization was tried.
      Signed-off-by: default avatarHenrik Kurelid <henrik@kurelid.se>
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      a40bf559
    • Henrik Kurelid's avatar
      firedtv: use length_field() of PMT as length · 7199e523
      Henrik Kurelid authored
      Parsed and used the length_field() of the PMT message instead of using
      the length field of the message struct, which does not seem to be filled
      correctly by e.g. MythTV.
      Signed-off-by: default avatarHenrik Kurelid <henrik@kurelid.se>
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      7199e523
    • Henrik Kurelid's avatar
      firedtv: fix returned struct for ca_info · 096edfbf
      Henrik Kurelid authored
      The SystemId of the ca_info message was filled with garbage.
      It now returns what the card returns.
      Signed-off-by: default avatarHenrik Kurelid <henrik@kurelid.se>
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      096edfbf
    • Stefan Richter's avatar
      firedtv: cleanups and minor fixes · 8ae83cdf
      Stefan Richter authored
      Combination of the following changes:
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: increase FCP frame length for DVB-S2 tune QSPK
      
          The last three bytes didn't go out to the wire.
          Effect of the fix not yet tested.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: replace mdelay by msleep
      
          These functions can sleep (and in fact sleep for the duration of a whole
          FCP transaction).  Hence msleep is more appropriate here.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: trivial reorganization in avc_api
      
          Reduce nesting level by factoring code out of avc_tuner_dsd() into
          helper functions.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: trivial cleanups in avc_api
      
          Use dev_err(), no CamelCase function names, adjust comment style, put
          #if 0 around unused code and add FIXME comments, standardize on
          lower-case hexadecimal constants, use ALIGN() for some frame length
          calculations, make a local function static...
      
          The code which writes FCP command frames and reads FCP response frames
          is not yet brought into canonical kernel coding style because this
          involves changes of typedefs (on-the-wire bitfields).
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: don't retry oPCR updates endlessly
      
          In the theoretical case that the target node wasn't handling the lock
          transactions as expected or there was continued interference by other
          initiating nodes, these functions wouldn't return for ages.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: remove bitfield typedefs from cmp, fix for big endian CPUs
      
          Use macros/ inline functions/ standard byte order accessors to read and
          write oPCR register values (big endian bitfields, on-the-wire data).
          The new code may not be the ultimate optimum, but it doesn't occur in a
          hot path.
      
          This fixes the CMP code for big endian CPUs.  So far I tested it only on
          a little endian CPU though.
      
          For now, include <asm/byteorder.h> instead of <linux/byteorder.h>
          because drivers/ieee1394/*.h also include the former.  I will fix this
          in drivers/ieee1394 and firedtv later.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: trivial cleanups in cmp
      
          Reduce nesting level by means of early exit and goto.
          Remove obsolete includes, use dev_err(), no CamelCase function names...
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: trivial cleanups in firesat-ci
      
          Whitespace, variable names, comment style...
      
          Also, use dvb_generic_open() and dvb_generic_release() directly as
          our hooks in struct file_operations because firedtv's wrappers merely
          called these generic functions.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: remove CA debug code
      
          This looks like it is not necessary to have available for endusers who
          cannot patch kernels for bug reporting and tests of fixes.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: remove AV/C debug code
      
          This looks like it is not necessary to have available for endusers who
          cannot patch kernels for bug reporting and tests of fixes.
      
      Sun, 2 Nov 2008 13:45:00 +0100 (CET)
      firedtv: remove various debug code
      
          Most of this was already commented out.  And that which wasn't is not
          relevant in normal use.
      
      Mon, 29 Sep 2008 19:22:48 +0200 (CEST)
      firedtv: register input device as child of a FireWire device
      
          Instead of one virtual input device which exists for the whole lifetime
          of the driver and receives events from all connected FireDTVs, register
          one input device for each firedtv device.  These input devices will show
          up as children of the respective firedtv devices in the sysfs hierarchy.
      
          However, the implementation falls short because of a bug in userspace:
          Udev's path_id script gets stuck with 100% CPU utilization, maybe
          because of an assumption about the maximum ieee1394 device hierarchy
          depth.
      
          To avoid this bug, we use the fw-host device instead of the proper
          unit_directory device as parent of the input device.
      
          There is hope that the port to the new firewire stack won't be inhibited
          by this userspace bug because there are no fw-host devices there.
      
      Mon, 29 Sep 2008 19:21:52 +0200 (CEST)
      firedtv: fix string comparison and a few sparse warnings
      
          Sparse found a bug:
          	while ((kv_buf + kv_len - 1) == '\0')
          should have been
          	while (kv_buf[kv_len - 1] == '\0')
          We fix it by a better implementation without a temporary copy.
      
          Also fix sparse warnings of 0 instead of NULL and signedness mismatches.
      
      Mon, 29 Sep 2008 19:21:20 +0200 (CEST)
      firedtv: remove unused struct members
      
          and redefine an int as a bool.
      
      Mon, 29 Sep 2008 19:20:36 +0200 (CEST)
      firedtv: fix initialization of dvb_frontend.ops
      
          There was a NULL pointer reference if no dvb_frontend_info was found.
      
          Also, don't directly assign struct typed values to struct typed
          variables.  Instead write out assignments to individual strcut members.
          This reduces module size by about 1 kB.
      
      Mon, 29 Sep 2008 19:19:41 +0200 (CEST)
      firedtv: remove unused dual subunit code from initialization
      
          No FireDTVs with more than one subunit exists, hence simplify the
          initialization for the special case of one subunit.  The driver was able
          to check for more than one subunit but was broken for more than two
          subunits.
      
          While we are at it, add several missing cleanups after failure, and
          include a few dynamically allocated structures diretly into struct
          firesat instead of allocating them separately.
      
      Mon, 29 Sep 2008 19:19:08 +0200 (CEST)
      firedtv: add vendor_id and version to driver match table
      
          Now that nodemgr was enhanced to match against the root directory's
          vendor ID if there isn't one in the unit directory, use this to
          prevent firedtv to be bound to wrong devices by accident.
      
          Also add the AV/C software version ID to the match flags for
          completeness; specifier ID and software only make sense as a pair.
      
      Mon, 29 Sep 2008 19:18:30 +0200 (CEST)
      firedtv: use hpsb_node_read(), _write(), _lock()
      
          because they are simpler and treat the node generation more correctly.
          While we are at it, clean up and simplify surrounding code.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      8ae83cdf
    • Stefan Richter's avatar
      ieee1394: remove superfluous assertions · 00fc3072
      Stefan Richter authored
      hpsb_read, hpsb_write, hpsb_lock are sleeping functions which nobody is
      in danger to use in atomic context.  Besides, in_interrupt does not
      cover all types of atomic context.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      00fc3072
    • Stefan Richter's avatar
      ieee1394: inherit ud vendor_id from node vendor_id · 9c939e4d
      Stefan Richter authored
      While Module_Vendor_ID in the configuration ROM's root directory is
      mandatory, there often aren't vendor IDs in unit directories.  This
      affects the new firedtv driver which is meant to be auto-loaded and
      matched only for vendor-specific devices.
      
      We now always copy ne->vendor_id into ud->vendor_id before we scan a
      unit directory (and fill in a possibly present vendor ID from there).
      This way, the root directory's vendor ID is used as fallback in the
      "uevent" environment for modprobe'ing per module alias when a node was
      plugged in, and in the driver match routine when protocol drivers are
      bound to unit directories.  It will however not be used as sysfs
      attribute of a unit directory device.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      9c939e4d
    • Stefan Richter's avatar
      ieee1394: add hpsb_node_read() and hpsb_node_lock() · b33fdd6c
      Stefan Richter authored
      These will be used by the firedtv driver.  Like hpsb_node_write() they
      are much better APIs for high-level drivers than hpsb_write() and its
      siblings --- easier to use correctly and also terser.
      
      Unlike hspb_node_write(), the two new functions will only be used by
      one call site.  Hence make them static inline instead of exported
      symbols.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      b33fdd6c
    • Stefan Richter's avatar
      ieee1394: use correct barrier types between accesses of nodeid and generation · 29f8ea8a
      Stefan Richter authored
      A compiler barrier (explicit on the read side, implicit on the write
      side) is not quite enough for what has to be accomplished here.  Use
      hardware memory barriers on systems which need them.
      
      (Of course a full fix of generation handling would require much more
      than this.  The ieee1394 core's bus generation counter had to be tied to
      the controller's bus generation counter; cf. Kristian's stack.  It's
      just that I have other current business with the code around these
      barrier()s, so why not do at least this small fix.)
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      29f8ea8a
    • Stefan Richter's avatar
      firesat: copyrights, rename to firedtv, API conversions, fix remote control input · 612262a5
      Stefan Richter authored
      Combination of the following changes:
      
      Tue, 26 Aug 2008 00:17:30 +0200 (CEST)
      firedtv: fix remote control input
      
          and update the scancode-to-keycode mapping to a current model.  Per
          default, various media key keycodes are emitted which closely match what
          is printed on the remote.  Userland can modify the mapping by means of
          evdev ioctls.  (Not tested.)
      
          The old scancode-to-keycode mapping is left in the driver but cannot be
          modified by ioctls.  This preserves status quo for old remotes.
      
      Tue, 26 Aug 2008 00:11:28 +0200 (CEST)
      firedtv: replace tasklet by workqueue job
      
          Non-atomic context is a lot nicer to work with.
      
      Sun, 24 Aug 2008 23:30:00 +0200 (CEST)
      firedtv: move some code back to ieee1394 core
      
          Partially reverts "ieee1394: remove unused code" of Linux 2.6.25.
      
      Sun, 24 Aug 2008 23:29:30 +0200 (CEST)
      firedtv: replace semaphore by mutex
      
          firesat->avc_sem and ->demux_sem have been used exactly like a mutex.
          The only exception is the schedule_remotecontrol tasklet which did a
          down_trylock in atomic context.  This is not possible with
          mutex_trylock; however the whole remote control related code is
          non-functional anyway at the moment.  This should be fixed eventually,
          probably by turning the tasklet into a worqueue job.
      
          Convert everything else from semaphore to mutex.
      
          Also rewrite a few of the affected functions to unlock the mutex at a
          single exit point, instead of in several branches.
      
      Sun, 24 Aug 2008 23:28:45 +0200 (CEST)
      firedtv: some header cleanups
      
          Unify #ifndef/#define/#endif guards against multiple inclusion.
          Drop extern keyword from function declarations.
          Remove #include's into header files where struct declarations suffice.
      
          Remove unused ohci1394 interface and related unused ieee1394 interfaces.
      
          Add a few missing #include's and remove a few apparently obsolete ones.
          Sort them alphabetically.
      
      Sun, 24 Aug 2008 23:27:45 +0200 (CEST)
      firedtv: nicer registration message and some initialization fixes
      
          Print the correct name in dvb_register_adapter().
      
          While we are at it, replace two switch cascades by one for loop, remove
          a superfluous member of struct firesat and of two unused arguments of
          AVCIdentifySubunit(), and fix bogus kfree's in firesat_dvbdev_init().
      
      Tue, 26 Aug 2008 14:24:17 +0200 (CEST)
      firesat: rename to firedtv
      
          Suggested by Andreas Monitzer.  Besides DVB-S/-S2 receivers, the driver
          also supports DVB-C and DVB-T receivers, hence the previous project name
          is too narrow now.
      
          Not yet done:  Rename source directory, files, types, variables...
      
      Sun, 24 Aug 2008 23:26:23 +0200 (CEST)
      firesat: add missing copyright notes
      
          Reported by Andreas Monitzer and Christian Dolzer.
      Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
      612262a5